![](/img/trans.png)
[英]Eclipse PyDev AttributeError: 'module' object has no attribute
[英]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-win
: https : //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.