既存の Oracle スキーマをいくつかの宣言型 SQLAlchemy モデルにリバース エンジニアリングしようとしています。私の問題は、を使用するMetaData.reflect
と、スキーマ内にテーブルが見つからず、グローバル一時テーブルだけが見つからないことです。ただし、他のテーブルに対してクエリを実行することはできます。
SQLAlchemy 0.7.8、CentOS 6.2 x86_64、python 2.6、cx_Oracle 5.1.2、および Oracle 11.2.0.2 Express Edition を使用しています。これが私が話していることの簡単なサンプルです:
>>> import sqlalchemy
>>> engine = sqlalchemy.create_engine('oracle+cx_oracle://user:pass@localhost/xe')
>>> md = sqlalchemy.MetaData(bind=engine)
>>> md.reflect()
>>> md.tables
immutabledict({u'my_gtt': Table(u'my_gtt', MetaData(bind=Engine(oracle+cx_oracle://user:pass@localhost/xe)), Column(u'id', NUMBER(precision=15, scale=0, asdecimal=False), table=<my_gtt>), Column(u'parent_id', NUMBER(precision=15, scale=0, asdecimal=False), table=<my_gtt>), Column(u'query_id', NUMBER(precision=15, scale=0, asdecimal=False), table=<my_gtt>), schema=None)})
>>> len(engine.execute('select * from my_regular_table').fetchall())
4