1

私のSQLAlchemy0.8コードは次のようになります。

model.py:

from sqlalchemy import Table
from sqlalchemy.orm import mapper

class Food(object):
    pass

def initialize_model(metadata):
    FoodTable = Table('food', metadata, schema='food', autoload=True)
    globals()['Food'] = mapper(Food, FoodTable)

app.py

engine = create_engine(dsn, convert_unicode=True)$
metadata = MetaData(engine)$

import xxx.core.model$
xxx.core.model.initialize_model(metadata)$

session = scoped_session(sessionmaker(bind=engine, twophase=True))

from xxx.core.model import Food
results = session.query(Food).filter(Food.nbo_no==query)

これにより、Food.ndb_noのAttributeErrorが発生しますが、FoodTableにはこの列'ndb_no'が含まれています。この列が「Food」マッパーにマップされないのはなぜですか?

4

1 に答える 1

1

宣言型レイヤーを使用し、Baseをinitialize_model()メソッドに直接渡すことで解決しました。

  9 def initialize_model(Base):
 10     
 11     class Food(Base, Mixin):
 12         __tablename__ = 'food'
 13         __table_args__ = {'schema': 'food', 'autoload': True}
 14     globals()['Food'] = Food
于 2013-01-06T11:44:18.617 に答える