【问题标题】:Sqlalchemy - How to Specify Owner in Oracle databaseSqlalchemy - 如何在 Oracle 数据库中指定所有者
【发布时间】:2018-09-26 11:47:54
【问题描述】:

我正在尝试从我的数据库中反映现有表:

engine = sqlalchemy.create_engine("oracle://username:password@id", ...)
meta = sqlalchemy.MetaData()
myTable = sqlalchemy.Table("myTable", meta, autoload=True, autoload_with=engine,
                           oracle_resolve_synonyms=True)

这给了我一个错误:

AssertionError: 架构可见多个表,您必须指定所有者

如何在 sqlalchemy 中指定所有者? The documentation 没有提到任何关于指定所有者的内容。该表实际上是同义词,所以我必须使用oracle_resolve_synonyms。我可以在技术上执行原始查询,但这不是我想做的事情。

【问题讨论】:

    标签: python oracle sqlalchemy


    【解决方案1】:

    这是关于 MetaData 的文档:http://docs.sqlalchemy.org/en/latest/core/metadata.html#sqlalchemy.schema.MetaData

    您可能希望使用架构所有者实例化 MetaData:

    meta = sqlalchemy.MetaData(engine, schema='ora_schema_owner')
    

    【讨论】:

    • 不错!这是一个更好的解决方案,因为我不必以这种方式为每个表指定它。
    【解决方案2】:

    看了源码发现可以通过the schema keyword argument指定所有者:

    myTable = sqlalchemy.Table("myTable", meta, autoload=True, autoload_with=engine,
                               oracle_resolve_synonyms=True, schema="ownerName")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-11
      • 2018-01-10
      • 1970-01-01
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      • 2013-07-30
      相关资源
      最近更新 更多