2012-02-10 159 views

回答

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至少是基於文件的方式),然後使用它。

0

我主要需要讀取權限和一些簡單的查詢。最新版本的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://[email protected]/%s'%(db_location))