Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将两列设置为外键引用SQLAlchemy中的两个主键_Python_Sqlite_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

Python 将两列设置为外键引用SQLAlchemy中的两个主键

Python 将两列设置为外键引用SQLAlchemy中的两个主键,python,sqlite,sqlalchemy,flask-sqlalchemy,Python,Sqlite,Sqlalchemy,Flask Sqlalchemy,我正在用烧瓶炼金术。我对如何将两列设置为外键引用两个主键感到困惑 类特征(db.Model): __tablename_uu='feature' id=db.Column(整数,主键=True) sample\u id=db.Column(整数,ForeignKey('sample.id'),primary\u key=True) 类移动(db.Model): __tablename_uu='move' id=db.Column(整数,主键=True,自动递增=True) feature_id=

我正在用烧瓶炼金术。我对如何将两列设置为外键引用两个主键感到困惑

类特征(db.Model):
__tablename_uu='feature'
id=db.Column(整数,主键=True)
sample\u id=db.Column(整数,ForeignKey('sample.id'),primary\u key=True)
类移动(db.Model):
__tablename_uu='move'
id=db.Column(整数,主键=True,自动递增=True)
feature_id=db.Column(整数,ForeignKey(feature.id),nullable=False)
sample\u id=db.Column(整数,ForeignKey(Feature.sample\u id),nullable=False)
__表参数=(
db.UniqueConstraint('feature_id','sample_id'),
)
我尝试了几种配置,但当我尝试插入某些内容时,我得到了:

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) foreign key mismatch - "move" referencing "feature"
事实上,create语句是错误的:

创建表移动(
id整数不为空,
特征id整数不为空,
样本id整数不为空,
主键(id),
唯一(特征标识、样本标识),
外键(特征id)引用特征(id),
外键(示例id)引用功能(示例id)
)
最后一行应该是:


外键(feature\u id,sample\u id)引用feature(id,sample\u id)
最后,我找到了一个解决方案

工作守则是:

class Move(db.Model):
    __tablename__ = 'move'
    id = db.Column(Integer, primary_key=True, autoincrement=True)
    feature_id = db.Column(Integer)
    sample_id = db.Column(Integer)
    __table_args__ = (ForeignKeyConstraint([feature_id, sample_id],
                                           [Feature.id, Feature.sample_id]), {})