【问题标题】:How do I use Oracle schema names in Pony ORM?如何在 Pony ORM 中使用 Oracle 模式名称?
【发布时间】:2015-07-15 00:25:55
【问题描述】:

这是我需要的查询:

SELECT * FROM SCHEMA.LOT

使用以下 Python 代码

class Lot(db.Entity):
    _table_ = 'SCHEMA.LOT'
    lot_key = PrimaryKey(int)
    lot_id = Required(str)

这是 Pony ORM 生成的查询:

SELECT "l"."LOT_KEY", "l"."LOT_ID"
FROM "SCHEMA.LOT" "l"

ORA-00942: table or view does not exist 自然会出错,因为 Oracle 认为 SCHEMA.LOT 是完整的表名。我真正需要的是 Pony ORM 生成模式和表名的组合,表名由不属于字符串的点分隔。所以以下任何一个都可以工作:

"SCHEMA"."LOT"
"SCHEMA".LOT
SCHEMA."LOT"

我试图通过将_table_ 定义为'SCHEMA"."LOT' 来欺骗Pony ORM,但它只是自动将其转换为损坏的"SCHEMA"".""LOT"。真气!

有没有办法解决这个问题?

【问题讨论】:

    标签: python oracle11g ponyorm


    【解决方案1】:

    PonyORM 这样做是因为点是有效的名称符号。

    为了指定复合名称,您需要将表名定义为字符串列表:

    class Lot(db.Entity):
        _table_ = ['SCHEMA', 'LOT']
        lot_key = PrimaryKey(int)
        lot_id = Required(str)
    

    【讨论】:

    • 这正是我所需要的。谢谢你,亚历山大。有这方面的文件吗?现在我知道要寻找什么了,我找到了另一个 GitHub 问题的答案;但我在任何地方都找不到此文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多