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

维希蒂

这是我需要的查询:

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_as来欺骗Pony ORM 'SCHEMA"."LOT',但是它只是自动将其转换为损坏的"SCHEMA"".""LOT"真气!

有没有办法解决?

亚历山大·科兹洛夫斯基

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章