Python 使用sqlalchemy在MySQL中定义关系
我正在使用sqlalchemy和MySQL构建一个数据库。我目前无法定义两个表之间的特定关系Python 使用sqlalchemy在MySQL中定义关系,python,mysql,sqlalchemy,Python,Mysql,Sqlalchemy,我正在使用sqlalchemy和MySQL构建一个数据库。我目前无法定义两个表之间的特定关系 class Experiment_Type(Base): __tablename__='experiment_types' id = Column(Integer, primary_key=True) type = Column(String(100)) class Experiments(Base): __tablename__ = 'experiments'
class Experiment_Type(Base):
__tablename__='experiment_types'
id = Column(Integer, primary_key=True)
type = Column(String(100))
class Experiments(Base):
__tablename__ = 'experiments'
id = Column(Integer, primary_key=True)
type = Column(String(100))
sub_id = Column(Integer, ForeignKey('experiment_types.id'))
experiments = relationship('Experiments',
primaryjoin="and_(Experiment_Type.id == Experiments.sub_id,
'Experiments.type' == 'Experiment_Type.type')",
backref=backref('link'))
我想做的是让实验中sub_id的值与基于类型的实验_类型中的id匹配(如果type='type1'的实验_类型中的条目id=1,那么type='type1'的实验中的条目应该具有sub_id=1)。我甚至不确定这是否是在这种情况下确定关系的最佳方法
所以任何建议都是欢迎的
当前错误消息如下:
sqlalchemy.exc.ArgumentError:在relationship Experiments.Experiments上找不到主联接条件“0=1”的任何相关外键列。确保引用列与ForeignKey或ForeignKeyConstraint相关联,或者在连接条件中用foreign()注释进行注释。在关系数据库中设置关系的要点是不必跨表复制数据。就这样做吧:
class ExperimentType(Base):
__tablename__='experiment_types'
id = Column(Integer, primary_key=True)
name = Column(String(100))
class Experiments(Base):
__tablename__ = 'experiments'
id = Column(Integer, primary_key=True)
description = Column(String(100))
type_id = Column(Integer, ForeignKey('experiment_types.id'))
type = relationship("ExperimentType")
然后,如果以后确实需要显示实验类型的内容,可以通过以下方式访问它:
exp = session.query(Experiment).first()
print exp.type.name