如何在Pony ORM中使用Oracle模式名称?

时间:2015-07-15 00:25:56

标签: python oracle11g ponyorm

这是我需要的查询:

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"。真气!

有什么方法吗?

1 个答案:

答案 0 :(得分:3)

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

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

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