2012-02-10 29 views
2

SQLAlchemyでMS Accessに接続する方法を教えてください。彼らのウェブサイトでは、接続文字列はaccess + pyodbcだと言います。それは接続のためにpyodbcを持つ必要があるということですか?私は初心者なので、優しくしてください。MSAccessにsqlalchemyを接続する

答えて

5

理論的には、これは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に表示されます)。

今すぐアクセスするには、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)) 
関連する問題