【发布时间】:2020-07-04 00:28:04
【问题描述】:
我正在使用 sqlalchemy 来管理我的数据库。 这些是我的桌子
class Series(Base):
__tablename__ = "Series"
id = Column("Id", Integer, primary_key=True, autoincrement=True)
series_name = Column("SeriesName", Unicode(50), nullable=False, unique=True)
class Season(Base):
__tablename__ = "Seasons"
id = Column("Id", Integer, primary_key=True, autoincrement=True)
series_id = Column(
"SeriesId", Integer, ForeignKey(f"{Series.__tablename__}.Id"), nullable=False
)
season_number = Column("SeasonNumber", Integer, nullable=False)
series = relationship("Series", uselist=False, lazy='joined', innerjoin=True)
__table_args__ = (UniqueConstraint("SeriesId", "SeasonNumber", name="UQ_SeriesId_SeasonNumber"),)
class Episode(Base):
__tablename__ = "Episodes"
id = Column("Id", Integer, primary_key=True, autoincrement=True)
episode = Column("Episode", Integer, nullable=False)
episode_name = Column("EpisodeName", Unicode, nullable=True)
season_id = Column(
"SeasonId", Integer, ForeignKey(f"{Season.__tablename__}.Id"), nullable=False
)
season = relationship("Season", uselist=False, lazy='joined', innerjoin=True)
__table_args__ = (UniqueConstraint("SeasonId", "Episode", name="UQ_SeasonId_Episode"),)
class DownloadStatus(aenum.Enum):
Start = "Start"
Processing = "Processing"
Downloading = "Downloading"
Finish = "Finish"
class Request(Base):
__tablename__ = "DownloadRequests"
id = Column("Id", Integer, primary_key=True, autoincrement=True)
status = Column("Status", Enum(DownloadStatus), nullable=False)
episode_id = Column(
"EpisodeId", Integer, ForeignKey(f"{Episode.__tablename__}.Id"), nullable=True
)
episode = relationship("Episode", uselist=False, lazy='joined', innerjoin=True)
在我的代码中,我需要找到一个特定的请求,在我结束与 sql 服务器的会话后,我返回请求,在会话结束后,我想使用外键链接到该请求的情节但是当我尝试时使用request.episode 访问剧集我得到DetachedInstanceError 如何删除所有外键记录以及主记录?
【问题讨论】:
标签: python-3.x sqlalchemy foreign-keys inner-join