【问题标题】:Setting Foreign Keys with SQLAlchemy for FastAPI使用 SQLAlchemy 为 FastAPI 设置外键
【发布时间】:2021-10-25 11:12:51
【问题描述】:

我的模型模块中有以下表格,我必须在它们的一些属性之间设置外键关系。但是,我失败了。

class Exercise(Base):
   __tablename__= "Exercise"
   id=Column(Integer, primary_key= True) 
   name=Column(VARCHAR(250))
   animation_id=Column(Integer, ForeignKey('Animation.id')) #foreign key -> animation.id
   animation=relationship("Animation", back_populates="exercise")
   

class Animation(Base):
   __tablename__="Animation"
   id=Column(Integer,primary_key=True,index=True,autoincrement=True)
   name=Column(VARCHAR(250))
   description=Column(VARCHAR(250))
   exercise=relationship("Exercise", back_populates="animation")

我正在尝试在 Exercise.animation_id 和 Animation.id 之间建立关系。 我尝试在代码中添加 ForeignKey('Animation.id')) 但它不起作用。

我想不出别的了。 提前致谢。

【问题讨论】:

  • “它不起作用”到底是什么意思?你有错误吗?
  • 代码可以正常工作,但 FK 不能正常工作。控制台上也没有什么特别的。
  • 碰巧你在使用 SQLite?
  • 通过从 MyISAM 切换 InnoDB 解决了这个问题。原来 MyISAM 不支持外键。

标签: python python-3.x sqlalchemy fastapi


【解决方案1】:

通过从 MyISAM 切换到 InnoDB 解决了这个问题。原来 MyISAM 不支持外键。

class Exercise(Base):
    __tablename__= "Exercise"
    __table_args__= {
        'mysql_engine':'InnoDB'
    }

【讨论】:

    猜你喜欢
    • 2022-12-21
    • 2020-06-04
    • 2015-02-02
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    相关资源
    最近更新 更多