Я пытаюсь получить данные из базы данных Microsoft Access.Проблема заключается в количестве ограничений, на которые я нахожусь:
- Я должен использовать 64-битный Python
- База данных доступа состоит из связанных таблиц с другой базой данных
- Для другой базы данных требуется 32-разрядный драйвер Oracle
Поэтому у меня база данных Access хранится локально, и я пытаюсь подключиться к ней с помощью PyODBC.
Я пробовалоглядываться и возиться со строкой соединения, но эта проблема кажется довольно уникальной.
В настоящее время это измененная версия того, что у меня есть:
import pyodbc
dbPATH = r'C:\path\to\database.accdb'
UID = 'username'
PWD = 'username'
driver = r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
credentials = r'DBQ=%s;UID=%s;PWD=%s'%(dbPATH, UID, PWD)
conn_str = driver + credentials
connection = pyodbc.connect(conn_str)
cursor = connection.cursor()
cursor.execute("select * from [table_name];")
for row in cursor.fetchone():
print(row)
Это ошибка, которую я обычно получаю:
pyodbc.Error: ('HY000', "[HY000] [Microsoft][ODBC Microsoft Access Driver] ODBC--connection to '{Oracle in OraClient11g_home1_32bit}' failed. (-2001) (SQLExecDirectW)")
Что удивительно, так как это драйвер и соединение, которое база данных доступа использует для подключения к другому источнику данных.
Я попытался установить
pyodbc.pooling = False
но это ничего не изменило.