Декларативный синтаксис SQLAlchemy с автозагрузкой (отражением) в PylonsPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Декларативный синтаксис SQLAlchemy с автозагрузкой (отражением) в Pylons

Сообщение Anonymous »

Я хотел бы использовать автозагрузку для использования существующей базы данных. Я знаю, как это сделать без декларативного синтаксиса (model/_init_.py):

Код: Выделить всё

def init_model(engine):
"""Call me before using any of the tables or classes in the model"""
t_events = Table('events', Base.metadata, schema='events', autoload=True, autoload_with=engine)
orm.mapper(Event, t_events)

Session.configure(bind=engine)

class Event(object):
pass
Это работает нормально, но я хотел бы использовать декларативный синтаксис:

Код: Выделить всё

class Event(Base):
__tablename__ = 'events'
__table_args__ = {'schema': 'events', 'autoload': True}
К сожалению, таким образом я получаю:


sqlalchemy.exc.UnboundExecutionError: Ни один механизм не привязан к метаданным этой таблицы. Передайте механизм в таблицу с помощью autoload_with= или свяжите метаданные с механизмом с помощью Metadata.bind=


Проблема здесь в том, что я не знаю, откуда взять движок (чтобы использовать его в autoload_with) на этапе импорта модели (он доступен в init_model()). Я попробовал добавить

Код: Выделить всё

meta.Base.metadata.bind(engine)
в Environment.py, но это не работает. Кто-нибудь нашел элегантное решение?

Подробнее здесь: https://stackoverflow.com/questions/452 ... -in-pylons
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»