【问题标题】:Reflecting Oracle Global Temp Tables Using Pythons SQLAlchemy使用 Python SQLAlchemy 反映 Oracle 全局临时表
【发布时间】:2015-07-27 06:26:27
【问题描述】:

我正在使用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”,这就是没有全局临时表反映的原因。

版本信息

  • sqlalchemy 1.0.4 py27_0
  • Oracle 数据库 11g 企业版版本 11.2.0.4.0 - 64 位

对此我有什么办法吗?

【问题讨论】:

  • 您使用的是什么版本的 SQLAlchemy 和 Oracle?

标签: python oracle sqlalchemy


【解决方案1】:

通过 MetaData.Tables() 附加到元数据似乎可行,但猜测有更好的解决方案:

    Test = [sqlalchemy.Table(t, meta, autoload=True, autoload_with=_engine, schema=_schema)
        for t in schedule.tables.values]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-02
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    相关资源
    最近更新 更多