Запрос к базе данных Access через pyodbc иногда работает нормально, но иногда выдает ошибку соединения - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь выполнить 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) ")

Как я могу исправить ошибку?

...