SQLAlchemy sintaxe declarativa com carregamento automático (reflexão) em Pylons
Eu gostaria de usar o carregamento automático para usar um banco de dados existente. Eu sei como fazê-lo sem sintaxe declarativa (model / _iniciar_.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
Isso funciona bem, mas eu gostaria de usar a sintaxe declarativa:
class Event(Base):
__tablename__ = 'events'
__table_args__ = {'schema': 'events', 'autoload': True}
Infelizmente, desta forma eu recebo:
sqlalchemy.exc.UnboundExecutionError: Nenhum mecanismo está vinculado aos MetaDados desta tabela. Passe um mecanismo para a Tabela via autoload_with = <someengine> ou associe os MetaData a um mecanismo via metadata.bind = <someengine>
O problema aqui é que não sei de onde obter o mecanismo (para usá-lo em autoload_with) no estágio de importação do modelo (ele está disponível em init_model ()). Eu tentei adicionar
meta.Base.metadata.bind(engine)
para environment.py, mas não funciona. Alguém encontrou alguma solução elegante?