python - SQLAlchemy - MS Access 连接失败

标签 python ms-access sqlalchemy sqlalchemy-access

我正在尝试使用 sql alchemy 连接到 MS Access。我的 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()

我收到错误:

Can't load plugin: sqlalchemy.dialects:access

最佳答案

sqlalchemy-access方言使用以下形式的连接 URI

access+pyodbc:// ...

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

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

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

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

access+pyodbc://@accessDatabase1

请参阅"Getting Connected" wiki page了解详情。

关于python - SQLAlchemy - MS Access 连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59244325/

相关文章:

python - Twisted + SQLAlchemy 和最好的方法

python - pickle 一个包含 __cinit__ : __setstate__ vs __reduce__? 的 cython 类

Python 和 RegEx 从未格式化的文本文件中查找演讲者及其演讲?

python - 使用 matplotlib 在 Pandas groupby 上绘制直方图

database - 错误 '3075' 语法错误(缺少运算符) Access 2013

c# - 计算数据库中检索到的行

vba - 禁用 MS Access 表单 'details' 部分中的所有控件

python - 从字符串中解析日期并使用 Sqlalchemy tosqlite 插入

python - 在提交 SQLAlchemy 模型之前获取更改的值

python - ruby 和 python 之间的语法差异?