В итоге я заставил работать вложенные поля, изменив мой файл базы данных с вышеупомянутого на -
from common import config
import sqlalchemy as db
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import scoped_session, sessionmaker, relationship, backref
engine = db.create_engine(config.SQLALCHEMY_DATABASE_URI, echo=True)
session = scoped_session(sessionmaker(bind=engine))
Base = declarative_base()
И на моих модельных методах, где я получаю доступ и запрашиваю базу данных вместо -
@classmethod
def find_by_name(cls, name):
session = Session()
episode = session.query(cls).filter_by(name=name).first()
session.close()
return episode
Вместо этого я не создаю новый сеанс и не закрываю его, а использую импортируемый сеанс с областью действия.
from common.db.base import Base, session
@classmethod
def find_by_name(cls, name):
episode = session.query(cls).filter_by(name=name).first()
return episode
Тем не менее, я все еще не уверен, не вызовет ли это некоторые проблемы из-за того, что он не является подходящим способом обработки сеансов ... Должен продолжать читать документы.