簡體   English   中英

AttributeError:模塊 'odbc' 沒有屬性 'connect' - python 與 pydev

[英]AttributeError: module 'odbc' has no attribute 'connect' - python with pydev

我對 python 很陌生,我似乎找不到這個錯誤的答案。 當我運行下面的代碼時,我得到了錯誤

AttributeError: module 'odbc' has no attribute 'connect'

但是,該錯誤僅顯示在 eclipse 中。 如果我通過命令行運行它沒有問題。 我正在運行 python 3.5。 我究竟做錯了什么?

try:
    import pyodbc
except ImportError:
    import odbc as pyodbc

# Specifying the ODBC driver, server name, database, etc. directly
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=PXLstr,17;DATABASE=Dept_MR;UID=guest;PWD=password')

刪除 try...except 塊的建議對我不起作用。 現在實際導入拋出如下錯誤:

Traceback (most recent call last):
  File "C:\Users\a\workspace\TestPyProject\src\helloworld.py", line 2, in <module>
    import pyodbc
  File "C:\Users\a\AppData\Local\Continuum\Anaconda3\Lib\site-packages\sqlalchemy\dialects\mssql\pyodbc.py", line 105, in <module>
    from .base import MSExecutionContext, MSDialect, VARBINARY

我確實安裝了 pyodbc,並且導入和連接在 windows 上的命令行可以正常工作。

謝謝你

這里的問題是, pyodbc模塊未在您的try / except塊中導入。 我強烈建議不要將import語句放在try塊中。 首先,你要確保你已經pyodbc安裝( pip install pyodbc ),最好在virtualenv ,那么你可以做這樣的事情:

import pyodbc

cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=PXLstr,17;DATABASE=Dept_MR;UID=guest;PWD=password')

cursor = cnxn.cursor()
cursor.execute('SELECT 1')

for row in cursor.fetchall():
    print(row)

如果您在Windows上運行(在給定DRIVER=參數的情況下顯示),請查看用於管理Windows Python虛擬環境的virtualenvwrapper-winhttps : //pypi.python.org/pypi/virtualenvwrapper-win

祝好運!

Flipper的答案有助於確定問題在於在eclipse中引用了外部庫列表中的錯誤庫。 修復后,問題已解決。

你的python文件的名字是什么? 如果您無意中將其命名為“pyodbc.py”,則會出現該錯誤。 因為它試圖導入自己而不是預期的 pyodbc 模塊。

這是解決方案! 只需安裝並使用 'pypyodbc' 而不是 'pypyodbc'! 我有我的測試示例,如下所示。 更改 SERVER_NAME、DATA_NAME 和 DRIVER 的數據。 也把你自己的記錄。祝你好運!

import sys
import pypyodbc as odbc

records = [
    ['x', 'Movie', '2020-01-09', 2020],
    ['y', 'TV Show', None, 2019]
]

DRIVER = 'ODBC Driver 11 for SQL Server'
SERVER_NAME = '(LocalDB)\MSSQLLocalDB'
DATABASE_NAME = 'D:\ASPNET\SHOJA.IR\SHOJA.IR\APP_DATA\DATABASE3.MDF'

conn_string = f"""
    Driver={{{DRIVER}}};
    Server={SERVER_NAME};
    Database={DATABASE_NAME};
    Trust_Connection=yes;
"""

try:
    conn = odbc.connect(conn_string)
except Exception as e:
    print(e)
    print('task is terminated')
    sys.exit()
else:
    cursor = conn.cursor()


insert_statement = """
    INSERT INTO NetflixMovies
    VALUES (?, ?, ?, ?)
"""

try:
    for record in records:
        print(record)
        cursor.execute(insert_statement, record)
except Exception as e:
    cursor.rollback()
    print(e.value)
    print('transaction rolled back')
else:
    print('records inserted successfully')
    cursor.commit()
    cursor.close()
finally:
    if conn.connected == 1:
        print('connection closed')
        conn.close()

相反,如果我想將 xml 導入 MDB dataframe? 在我的情況下,我有很多 xml 文件,我應該手動將 xml 導入到 xml,我想知道如何自動導入它們,如果有人能幫我一把...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM