2014-02-20 2 views
2

Я пытаюсь сопоставить существующую базу данных DB2 с новыми объектами ORM python. Я написал очень простой класс сопоставителя:Db2 с SQLAlchemy, как указать схему по умолчанию

class Storage(Base): 

    __tablename__ = 'T_RES_STORAGE_SUBSYSTEM'   

    id = Column(Integer,primary_key=True,name='SUBSYSTEM_ID') 
    name = Column(String(255),name='NAME') 
    namealias = Column(String(256),name='NAME_ALIAS') 

Но когда я пытаюсь отобразить его, выполнив запрос он помещает DB2ADMIN .tablename перед каждым запросом, который, конечно, привести к ошибкам. Если я выполнил запрос вручную, добавив TPC.tablename к нему, тогда все будет работать без проблем.

Как я могу указать в определении таблицы, какую схему использовать?

+1

Что вы называете «табличного» на самом деле схема. Я отредактировал вопрос соответствующим образом. – mustaccio

+0

Спасибо, я не был уверен, как это назвать:/ –

+0

Нашел решение после исправления: D Спасибо, мистер –

ответ

1

ИТАК после помощи mustaccio, я узнал, что в table_args вы должны добавить schema:

class Storage(Base): 

    __tablename__ = 'T_RES_STORAGE_SUBSYSTEM' 
    __table_args__ = {'schema' : 'TPC'} 

    id = Column(Integer,primary_key=True,name='SUBSYSTEM_ID') 
    name = Column(String(255),name='NAME') 
    namealias = Column(String(256),name='NAME_ALIAS') 
+0

Только то, что я искал. Любые хорошие идеи для повторного использования объекта по нескольким схемам? (работа с системой, которая имеет дубликаты таблиц в схемах -> customer1schema.infotable, customer2schema.infotable, ...) – Justin

+0

Обнаружили это, чтобы изменить схемы - http://stackoverflow.com/questions/29595161/sqlalchemy-dynamic-schema- на субъекта-в-выполнения – Justin

Смежные вопросы