SQLAlchemy - MS Access 连接失败
Posted
技术标签:
【中文标题】SQLAlchemy - MS Access 连接失败【英文标题】:SQLAlchemy - MS Access connection failure 【发布时间】: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
【问题讨论】:
【参考方案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 一起使用。您不需要外部方言。以上是关于SQLAlchemy - MS Access 连接失败的主要内容,如果未能解决你的问题,请参考以下文章
sqlalchemy 无法连接到 ms sql server
连接 MS Access 而另一个应用程序使用相同的 MS Access 文件
MS Access 中通过 ODBC 连接 MS SQL 表的查询非常慢