我正在尝试反映我的数据库中的现有表:
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
。我可以在技术上执行原始查询,但这不是我想要做的事情。
答案 0 :(得分:1)
阅读完源代码后,我发现可以通过the schema
keyword argument指定所有者:
myTable = sqlalchemy.Table("myTable", meta, autoload=True, autoload_with=engine,
oracle_resolve_synonyms=True, schema="ownerName")
答案 1 :(得分:1)
这是关于MetaData的文档:http://docs.sqlalchemy.org/en/latest/core/metadata.html#sqlalchemy.schema.MetaData
您可能希望使用架构所有者实例化MetaData:
meta = sqlalchemy.MetaData(engine, schema='ora_schema_owner')