Orm SQLAlchemy在插入挂钩之前
在从ORM中插入一行之前,我试图找出如何编写一个钩子来查询数据库。我希望实现类似的目标:Orm SQLAlchemy在插入挂钩之前,orm,sqlalchemy,Orm,Sqlalchemy,在从ORM中插入一行之前,我试图找出如何编写一个钩子来查询数据库。我希望实现类似的目标: class Table(Base): id = Column(Integer, primary_key=True) value = Column(Integer, nullable=False) def before_insert_hook(self, session): """Some arbitrary queries and code. For exampl
class Table(Base):
id = Column(Integer, primary_key=True)
value = Column(Integer, nullable=False)
def before_insert_hook(self, session):
"""Some arbitrary queries and code. For example:"""
if self.value is None:
self.value = session.query(func.avg(Table.value))\
.filter(Table.value > 100).scalar()
我一直在阅读SQLAlchemy文档中关于ORM事件之类的内容,但我不知道如何使用它们来实现这一点。看起来您想要:
也许这可以帮助您:如果您使用的是PostgreSQL,理论上,这可以使用CTE(使用AS…INSERT…)实现。但通过SQLAlchemy似乎还不可能做到这一点,请参阅公开问题。mapper和connect在这里指的是什么?
from sqlalchemy import event
class Table(Base):
...
@event.listens_for(Table, 'before_insert')
def do_stuff(mapper, connect, target):
# target is an instance of Table
target.value = ...