Python SqlAlchemy:是指从对象绑定的会话吗?
假设我正在使用一个声明性对象,如下所示:Python SqlAlchemy:是指从对象绑定的会话吗?,python,sqlalchemy,Python,Sqlalchemy,假设我正在使用一个声明性对象,如下所示: class MyObject(DeclarativeBase): ... other_object_id = Column(Integer, ForeignKey('other_object.id')) other_object = relationship("OtherObject") ... 假设我想要一个方便的方法设置其他对象的值,它将修改其他对象的值,创建一个其他对象的实例,并在必要时将其添加到会话中: def set_
class MyObject(DeclarativeBase):
...
other_object_id = Column(Integer, ForeignKey('other_object.id'))
other_object = relationship("OtherObject")
...
假设我想要一个方便的方法设置其他对象的值
,它将修改其他对象的值
,创建一个其他对象的实例
,并在必要时将其添加到会话中:
def set_other_object_value(self, value):
if self.other_object is None:
<create instance of OtherObject and associate with the session>
self.other_object.value = value
def set_other_object_值(self,value):
如果self.other_对象为None:
self.other_object.value=值
问题是:如何创建OtherObject
并将其与会话关联?一个可能等价的问题:是否可以访问从MyObject
实例中添加了MyObject
的会话的实例?使用:
但是,如果您已正确设置了关系,则无需将新的值添加到会话中,因为sqlalchemy
将找出它并将其保存到数据库中
from sqlalchemy.orm.session import object_session
# ...
def set_other_object_value(self, value):
if self.other_object is None:
value = OtherObject(...)
self.other_object.value = value
object_session(self).add(value)