Обе версии Python и ms-access являются 32-битными, но они не подключаются. Как соединить два? - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь создать систему инвентаризации для своего бота-раздора, и мне нужно подключить python к MS-Access с помощью pyodbc. Я хочу иметь возможность обновлять, удалять и добавлять значения в таблицу.

Я посмотрел на datafish.com, в частности на этот сайт: https://datatofish.com/how-to-connect-python-to-ms-access-database-using-pyodbc/, но он выдает ту же ошибку, что и проблемаодин, и я убедился, что я использую и MS-Access и Python на 32-разрядных.

Это код, который я использовал, в значительной степени прямо с сайта.

import pyodbc
conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\Khang Nguyen\Documents\Inventories.accdb')
cursor = conn.cursor()
cursor.execute('select *from TestTable')

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

Когда я использую этот код, он выдает мне эту ошибку:

Traceback (most recent call last):
  File "C:/Users/Khang Nguyen/AppData/Local/Programs/Python/Python38-32/Hey.py", line 3, in <module>
    conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\Khang Nguyen\Documents\Inventories.accdb')
pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

Я ожидал, что он напечатает мою таблицу (очень простая таблица), но он выдает мне сообщение об ошибке выше.

ОБНОВЛЕНИЕ: Я обновил 32-разрядную версию Python 3.8 и обновил версию MS Access. Я использую точно такой же код, и он выдает мне совершенно другую ошибку:

Traceback (most recent call last):
  File "C:\Users\Khang Nguyen\AppData\Local\Programs\Python\Python38-32\Hey.py", line 3, in <module>
    conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\Khang Nguyen\Documents\Inventories.accdb')
pyodbc.Error: ('HY000', "[HY000] [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x79c Thread 0x2720 DBC 0x49763dc                                                              Jet'. (63) (SQLDriverConnect); [HY000] [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x79c Thread 0x2720 DBC 0x49763dc                                                              Jet'. (63); [HY000] [Microsoft][ODBC Microsoft Access Driver] The database you are trying to open requires a newer version of Microsoft Access. (-1073); [HY000] [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x79c Thread 0x2720 DBC 0x49763dc                                                              Jet'. (63); [HY000] [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x79c Thread 0x2720 DBC 0x49763dc                                                              Jet'. (63); [HY000] [Microsoft][ODBC Microsoft Access Driver] The database you are trying to open requires a newer version of Microsoft Access. (-1073)")

Интервал также очень странный. Я убедился, что мой MS Access обновлен. Любое решение? Может быть, это потому, что MS Access Redistributable был обновлен (я проверял), но я не знаю. Я просто знаю, что приложение, которое я создаю, вообще нуждается в этом коде.

...