我正在尝试通过pyodbc
在本地存储的Access数据库中执行SQL查询。
在下面的代码中,打印表名称可以正常工作,因此连接似乎已成功建立:
import pyodbc
import pandas as pd
conn_str = (
r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
r'DBQ=O:\MAP\05_Reporting\2018_MAPDB_NewServer.accdb;'
r'PWD=some_password;'
r'UID=some_login;'
)
cnxn = pyodbc.connect(conn_str)
cursor = cnxn.cursor()
def get_table_names():
table_names = (table_info.table_name for table_info in cnxn.cursor().tables())
return table_names
def get_query():
sql = "SELECT MAID FROM dbo_MAMain"
cursor.execute(sql)
query = cursor.fetchall()
return query
if __name__ == '__main__':
table_names = get_table_names()
for table_name in table_names:
print(table_name) # this works fine
query = get_query() # this gives a connection error
print(query)
但是,query = get_query()
行将引发错误,指示相反的内容:
回溯(最近一次通话最后一次):文件“ test.py”,第28行,在 query = get_query()在get_query中的文件“ test.py”,第19行 cursor.execute(sql)pyodbc.Error :(“ HY000”,“ [HY000] [Microsoft] [ODBC Microsoft Access驱动程序] ODBC--连接到 “ MAP_SQL_2014”失败。 (-2001)(SQLExecDirectW)“)
如何解决该错误?