插入带有复合主键的模型时发生IntegrityError - python

我试图用复合主键创建一个表。它具有一个整数和两个字符串字段作为键。当我提交会话时,它会引发一个IntegrityError。我在做什么错了?

class Targets(db.Model):
    __tablename__ = 'Targets'
    id = db.Column(db.Integer, primary_key=True)
    Event_Name = db.Column(db.String, index=True, default='Single_Trigger', primary_key=True)
    Trigger_id = db.Column(db.String, index=True, unique=True, primary_key=True)

>>> from app import db, models
>>> target = models.Targets(Trigger_id='20150421_221942_ST_1')
>>> db.session.add(target)
>>> db.session.commit()

IntegrityError: (IntegrityError) NOT NULL constraint failed: Targets.id u'INSERT INTO "Targets" ("Event_Name", "Name", "Trigger_id", "Tile", "Status", "RA", "Dec", "Filter", "Exp_time", "No_Exp") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' ('Single_Trigger', '20150421_221942_ST_1', '20150421_221942_ST_1', 1, 0, 102.0, 231.25, 'V', 30, 5)

参考方案

SQLAlchemy不会在组合键上设置自动增量,您需要在id列上设置autoincrement = True。

http://docs.sqlalchemy.org/en/latest/core/metadata.html#sqlalchemy.schema.Column.params.autoincrement

如果表具有一个由多个整数列组成的复合主键,则仅在应视为“自动增量”的列上将此标志设置为True。

flask sqlalchemy-根据数据库中的列动态生成数据模型 - python

有没有一种方法可以根据Flask SQLAlchemy的数据库表中的列动态生成数据库模型?我有一个应用程序来显示数据库表中的数据,但是列名有时会更改并破坏我的应用程序。我希望有一种方法可以根据数据库中的实际列名动态​​生成数据模型。我目前明确声明所有列,如下所示。class MyDbModel(db.Model): __tablename__ = '…

Flask_SQLAlchemy无法像SQLAlchemy那样反映数据库 - python

我正在尝试使用python-Flask将Foreigner Database连接到Flask_SQLALchemy应用我到处都看过,包括FLASK_SQLALCHEMY official doc 过去4天里,我一直在Internet上到处寻找FLASK_SQLALCHEMY中没有ORM库的任何教程,但运气不佳我一直在查看SQLAlchemy Reflecti…

Python / Flask-如何在响应中返回有效的JSON而不是字符串? - python

我正在使用Flask Restful创建一个简单的API,该API在get Response中返回JSON。我所有的方法都很好,我的问题是响应结果中的细节,因为JSON实际上是以字符串形式出现的,我不知道该怎么做。当我用json.dumps()转换python dict时会发生问题我尝试不使用json.dumps()方法来执行此操作,并且我的结果采用所需的格…

Flask模板中的全局变量 - python

可能不是准确的标题,因为我是flask / python的新手。我正在开发一种内部工具,供不同团队使用。每个团队都有不同的部署阶段,例如alpha,beta|test,prod,并且它们还具有多个区域,例如NA,EU,AP等。现在,当我使用redirect_template时,我将发送stage和region作为变量,然后在模板中使用它们。但是,对每个red…

SQLalchemy数据库列应采用哪种模型来包含数据数组? - python

因此,我正在尝试建立一个数据库,该数据库的行将经常修改。例如,每小时,我想向数据库的特定部分添加一个数字。因此,如果将self.checkmarks输入等于3的数据库,最好的方法是用增加的数字更新数据库的此部分以使self.checkmarks现在等于3, 2?我尝试将列建立为db.Array,但出现属性错误: AttributeError:“ SQLAlc…