【问题标题】:SQLAlchemy - MS Access connection failureSQLAlchemy - MS Access 连接失败
【发布时间】:2019-12-09 07:31:36
【问题描述】:

我正在尝试使用 sql alchemy 连接到 MS Access。我的访问是 64 位的。我已经尝试过 32 位 python 和 64 位 python。结果是一样的。

它使用 pyodbc 工作:

import pyodbc
from sqlalchemy import create_engine

class MSAccessConnector:

    def __init__(self, **kwargs):
        self.kwargs = kwargs

    def test_connection(self):
        try:

            conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C://Users//Gautam Sardana//Documents//gautam.accdb;')

            cursor = conn.cursor()
            return cursor


    except Exception as e:
        print(e)
    pass

MSAccessConnector().test_connection()

但使用 sqlalchemy 失败:

import pyodbc 
from sqlalchemy import create_engine

class MSAccessConnector:

    def __init__(self, **kwargs):
        self.kwargs = kwargs

    def test_connection(self):
        try:

            engine = create_engine(r'access:///C:/Users/Gautam Sardana/Documents/gautam.accdb')
            return engine

        except Exception as e:
            print(e)
        pass

    def connect(self):
        pass

MSAccessConnector().test_connection()

我得到错误:

无法加载插件:sqlalchemy.dialects:access

【问题讨论】:

    标签: python ms-access sqlalchemy sqlalchemy-access


    【解决方案1】:

    sqlalchemy-access 方言使用表单的连接 URI

    access+pyodbc:// ...
    

    不再支持以前的access:// ... 表单。

    您也不能简单地提供 Access 数据库文件的路径,例如

    access+pyodbc:///C:/Users/Gautam Sardana/Documents/gautam.accdb
    

    相反,您必须提供 ODBC 系统/用户 DSN 的名称或直通 ODBC 连接字符串。例如,对于一个名为“accessDatabase1”的系统或用户 DSN,它指向一个正常的、未受保护的 Access 数据库文件,您将使用

    access+pyodbc://@accessDatabase1
    

    详情请参阅"Getting Connected" wiki page

    【讨论】:

    • 为此,我收到错误“无法加载插件:sqlalchemy.dialects:access.pyodbc”
    • pip install sqlalchemy-access ...吗?
    • 是的,我做到了。我有一个问题,它可以使用 sqlite 吗?
    • 是的,SQLAlchemy 可以与 SQLite 一起使用。您不需要外部方言。
    猜你喜欢
    • 2012-03-03
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    相关资源
    最近更新 更多