我正在使用sqlalchemy并希望反映一些全局临时表的表结构。
from sqlalchemy import MetaData
...
meta = MetaData()
meta.reflect(bind = engine, only = ['tt_employees'], schema = schema)
建立连接时启用'echo = True':
db_engine = create_engine(engine.url.URL(**params), echo=self._echo)
我可以反映除全局临时表之外的所有表。这是因为sqlalchemy在reflect()中查找表的方式:
INFO sqlalchemy.engine.base.Engine
SELECT table_name
FROM all_tables
WHERE nvl(tablespace_name, 'no tablespace') NOT IN ('SYSTEM', 'SYSAUX')
AND OWNER = :owner
AND IOT_NAME IS NULL
AND DURATION IS NULL
Oracle全球临时表的持续时间为'SYS $ SESSION',这就是没有全局临时表反映的原因。
版本信息
我能做些什么吗?
答案 0 :(得分:0)
通过MetaData.Tables()附加到元数据似乎可行,但猜测有更好的解决方案:
Test = [sqlalchemy.Table(t, meta, autoload=True, autoload_with=_engine, schema=_schema)
for t in schedule.tables.values]