【问题标题】:connecting sqlalchemy to MSAccess将 sqlalchemy 连接到 MS Access
【发布时间】:2012-03-03 06:49:19
【问题描述】:

如何使用 SQLAlchemy 连接到 MS Access?在他们的网站上,它说连接字符串是 access+pyodbc。这是否意味着我需要 pyodbc 进行连接?由于我是新手,请温柔。

【问题讨论】:

    标签: python sql ms-access sqlalchemy pyodbc


    【解决方案1】:

    理论上这将是通过 create_engine("access:///some_odbc_dsn"),但 Access 后端自 SQLAlchemy 0.5 以来根本没有投入使用,而且目前也不清楚它当时的工作情况如何(这就是为什么它在http://docs.sqlalchemy.org/en/latest/core/engines.html#supported-databases 被称为“开发”的原因 - “开发”的意思是,“方言的开发版本存在,但尚不可用”)。现在没有足够的兴趣/志愿者来保持这种方言的运行。 (当/如果是,你会在http://docs.sqlalchemy.org/en/latest/dialects/access.html看到它)。

    您现在对 Access 的最佳选择是将数据导出到 SQLite 数据库文件(或者当然是其他一些数据库,尽管 SQLite 至少以类似的方式基于文件),然后使用它。

    2019 年 9 月更新:

    sqlalchemy-access 方言已经复活。详情here

    使用示例:

    engine = create_engine("access+pyodbc://@some_odbc_dsn")
    

    【讨论】:

      【解决方案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))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多