2015-07-15 7 views
2

Это вопрос, что мне нужно:Как использовать имена схем Oracle в Pony ORM?

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', но он просто автоматически преобразует это в разбитой "SCHEMA"".""LOT". Бешенство!

Есть ли способ обойти это?

ответ

3

PonyORM делает это, потому что точка является допустимым символом имени.

Для того чтобы указать соединение имя вам необходимо определить имя таблицы в виде списка строк:

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

Это именно то, что мне было нужно. Спасибо, Александр. Есть ли для этого документация? Теперь, когда я знаю, что искать, я нашел еще один вопрос GitHub с этим ответом; но я не могу найти это документально нигде. – Vijchti