如何使用SQLAlchemy连接到MS Access?在他们的网站上,它说连接字符串是access + pyodbc。这是否意味着我需要pyodbc进行连接?由于我是新手,请保持温和。
答案 0 :(得分:5)
理论上,这将是通过create_engine(“access:/// some_odbc_dsn”),但是自SQLAlchemy 0.5以来,Access后端根本没有服务,并且不清楚它的工作效果如何(这就是为什么它被称为http://docs.sqlalchemy.org/en/latest/core/engines.html#supported-databases处的“发展” - “发展”意味着“方言的发展版本存在,但尚未使用”)。目前还没有足够的兴趣/志愿者来保持这种方言的运行。 (当/如果是,你会在http://docs.sqlalchemy.org/en/latest/dialects/access.html看到它。)
您现在最好的选择是将数据导出到SQLite数据库文件(当然还有其他一些数据库,尽管SQLite至少以类似的方式基于文件),然后使用它。
答案 1 :(得分:2)
我主要需要读访问和一些简单的查询。最新版本的sqlalchemy具有(损坏的)访问后端模块,但它未注册为入口点。
它需要一些修正,但这对我有用:
def fixup_access():
import sqlalchemy.dialects.access.base
class FixedAccessDialect(sqlalchemy.dialects.access.base.AccessDialect):
def _check_unicode_returns(self, connection):
return True
def do_execute(self, cursor, statement, params, context=None, **kwargs):
if params == {}:
params = ()
super(sqlalchemy.dialects.access.base.AccessDialect, self).do_execute(cursor, statement, params, **kwargs)
class SomeObject(object):
pass
fixed_dialect_mod = SomeObject
fixed_dialect_mod.dialect = FixedAccessDialect
sqlalchemy.dialects.access.fix = fixed_dialect_mod
fixup_access()
ENGINE = sqlalchemy.create_engine('access+fix://admin@/%s'%(db_location))