首次使用此查询时,我获得了有效的查询结果,但我再次刷新页面时出现此错误:
Parent instance is not bound to a Session; lazy load operation of attribute 'City' cannot proceed
这是我的疑问:
SELECT p.ID AS 'persons_ID', p.FirstName AS 'persons_FirstName', p.LastName AS 'persons_LastName',
p.NationalCode AS 'persons_NationalCode', p.CityID AS 'persons_CityID', p.Mobile AS 'persons_Mobile',
p.Address AS 'persons_Address', cities_1.ID AS 'cities_1_ID', cities_1.Name AS 'cities_1_Name',
cities_1.ParentID AS 'cities_1_ParentID', cities_2.ID AS 'cities_2_ID', cities_2.Name AS 'cities_2_Name',
cities_2.ParentID AS 'cities_2_ParentID' , cast(@row := @row + 1 as unsigned) as 'persons_row_number'
FROM Persons p LEFT OUTER JOIN cities AS cities_2 ON cities_2.ID = p.CityID
LEFT OUTER JOIN cities AS cities_1 ON cities_1.ID = cities_2.ParentID , (select @row := 0) as init
执行查询:
lst = ses.query(Persons).options(joinedload('City')).from_statement(query).all()
型号:
class Persons(Base):
__tablename__ = 'persons'
ID = Column(Integer, primary_key=True)
FirstName = Column(String(50))
LastName = Column(String(100))
NationalCode = Column(String(10))
CityID = Column(Integer, ForeignKey('cities.ID'))
Mobile = Column(String(10))
Address = Column(String(10))
City = relationship("Cities",lazy="joined",join_depth=2, uselist=False)
CitiesModel = Cities()
ProvinceID = None
HashID = None
row_number = None