Я пытаюсь выполнить SQL-запрос в локальной базе данных Access через pyodbc
.
В приведенном ниже коде печать имен таблиц работает нормально, поэтому, кажется, соединение установлено успешно:
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()
выдаст ошибку, которая указывает на нечто противоположное:
Traceback (последний вызов был последним): файл "test.py", строка 28, в
query = get_query () Файл "test.py", строка 19, в get_query
cursor.execute (sql) pyodbc.Error: ('HY000', "[HY000] [Microsoft] [ODBC Microsoft Access Driver] ODBC - подключение к
Ошибка «MAP_SQL_2014». (-2001) (SQLExecDirectW) ")
Как я могу исправить ошибку?