这是我需要的查询:
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"
。真气!有没有办法解决?
最佳答案
PonyORM这样做是因为点是有效的名称符号。
为了指定复合名称,您需要将表名称定义为字符串列表:
class Lot(db.Entity):
_table_ = ['SCHEMA', 'LOT']
lot_key = PrimaryKey(int)
lot_id = Required(str)