第一個表“release_name”:
|代碼|名稱|
|:---|:--:|
|1---|一些|
|2---|任意 |
...
第二個表“release_value”:|代碼|名稱|
|:---|:--:|
|1---|一些|
|2---|任意 |
...
3rd 是在“release_code_name”上方連接 2 個表的表:
|release_name_code|release_value_code|
|:----------------|:----------------:|
|1----------------|2-----------------|
|1----------------|2-----------------|
|2----------------|3-----------------|
我將 SQLAlchemy 與 FastApi 一起使用。我需要做的是將 2 個表連接到 3 個映射表中。
我嘗試過的并沒有列印出我需要的東西:
Link = Table(
"release_code_name",
Base.metadata,
Column("release_name_code", Integer, ForeignKey("release_name_code.code"), primary_key=True),
Column("release_value_code", Integer, ForeignKey("release_value_code.code"), primary_key=True),
PrimaryKeyConstraint("release_name_code", "release_value_code")
)
class ReleaseNames(Base):
__tablename__="release_name"
code = Column(Integer, primary_key=True)
name = Column(String, unique=True, nullable=False)
build_name = relationship("BuildNames", secondary="release_code_name", back_populates="release_name")
class BuildNames(Base):
__tablename__ = "release_value"
code = Column(Integer, primary_key=True)
name = Column(String, unique=True, nullable=False)
release_name = relationship(ReleaseNames, secondary="release_code_name", back_populates="build_name")
@router.get("/")
async def build_names_by_release(release_name: str, db: Session = Depends(get_database_session)):
result = db.query(ReleaseNames).join(BuildNames, ReleaseNames.build_name)
return result
我想我在控制器功能中加入表格時遇到問題。
uj5u.com熱心網友回復:
在你的relationship,里面secondary不帶一個字串,而是包含你的表的變數:
build_name = relationship("BuildNames", secondary=Link, back_populates="release_name")
release_name = relationship("ReleaseNames", secondary=Link, back_populates="build_name")
在創建表時ForeignKey,您傳遞了錯誤的引數。確實,您給了它release_name_code.code而不是release_name.code. 您希望將列鏈接到表格release_name而不是列release_name_code(您現在正在創建的列)。
release_name_code是您正在創建的列的名稱。
release_name是你的表ReleaseNames。
所以替換你的表的 ForeignKey 如下:
Column("release_name_code", Integer, ForeignKey("release_name.code"), primary_key=True),
Column("release_value_code", Integer, ForeignKey("release_value.code"), primary_key=True),
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/482548.html
標籤:sql 加入 sqlalchemy 快速API
