私はピラミッドフレームワークでsqlalchemyを使用しており、郵便番号を使用して人を地理部門にリンクしたいと考えています。したがって、department_id列を定義するときにonupdate引数を使用して、department_idを定義しようとします。休閑コードを参照してください:
from datetime import date
from emailing.models import Base, DBSession
from sqlalchemy import Column, Integer, Unicode, Text, DateTime, Sequence, Boolean, Date, UnicodeText, UniqueConstraint, Table, ForeignKey
from sqlalchemy.orm import scoped_session, sessionmaker, column_property, relationship, backref
from sqlalchemy.sql import func
class Person(Base):
__tablename__ = u'person'
id = Column(Integer, primary_key=True)
firstName = Column(Unicode(255))
lastName = Column(Unicode(255))
created_at = Column(Date, default=func.now())
updated_at = Column(Date, onupdate=func.now())
department_id = Column(Integer(), ForeignKey('department.id'), onupdate=dep_id_from_postcode)
department = relationship("Department", backref='persons')
__table_args__ = (UniqueConstraint('firstName', 'lastName'), {})
def dep_id_from_postcode(self):
return int(self.postcode[:2])
update_atフィールドの更新時に正常に機能しますが、deparment_idフィールドの場合は次のようになります。
NameError:名前'dep_id_from_postcode'が定義されていません
ここでPython実行関数に関するドキュメントを見つけました:http://docs.sqlalchemy.org/en/latest/core/schema.html ?highlight = trigger#python-executed-functions が、onupdateで使用するために別のフィールドを使用するものはありません口論。
私は「自然な英語を話す人」ではないので、十分にはっきりしていることを願っています。ありがとうございました。