我使用SQLAlchemy 0.5和Python 2.6.6。session_proxy创建者
我想在association_proxy的创建者中选择或创建引用的对象。我的问题是,我需要为此进行一次会话,但我不知道在创建者回调中如何获取此信息。
如何在一个关联代理的创建者中使用对象所属的会话?
我已经试过,不工作
我发现session.object_session
,但没有任何物体在回调,除非是我的ORM对象的一部分。如果是我的对象的一部分,呼叫者将不能称其为一个方法(第一个参数是代理的值,而不是对象的引用):
class Event(ManagerBase):
# If association_proxy calls this, 'self' is the key, not the
# reference to the calling instance.
def _field_find_or_create(self, key, val):
session = session.object_session(self)
field = session.query(Field).filter_by(name=key).first()
if not field:
field = Field(name=key)
return EventFieldValue(field=field, value=val)
fields = association_proxy("field_values", "value",
creator=_field_find_or_create)
我可以通过对象本身的创造者的功能?在这种情况下,我可以在这个对象上调用object_session。
我的项目使用了几个会话,因此我必须确定创建者执行的具体会话。
如果以异步方式编程(例如Tornado),情况也是如此。在龙卷风会议永远不会是全球性的,以免交易会被不同的处理程序混淆。 –