我有一些代码,当我尝试插入新记录时遇到完整性错误时不时(不总是):
IntegrityError:(IntegrityError)重复键值违反唯一 约束“question_pkey”DETAIL:Key(id)=(1)已经存在。
我在这里读到某个地方,这不是Postgres错误,所以它可能与我的代码有关。
当我做卷曲时,我正在插入这些东西:
curl 127.0.0.1:5000/test/question -d '{"question_order": 6, "question_admin_type": 2}'
我的代码如下:
def post(self, question_id=0):
post_args = request.get_json(force=True)
if question_id == 0: # assume new record
question_obj = Question(**post_args)
db.session.add(question_obj)
db.session.flush()
db.session.commit()
错误消息似乎指向db.session.flush()
,但我不知道为什么。看起来它之前的线路有问题。看起来我的程序试图从最开始的id开始插入,如果失败则会抛出此错误。在下一次插入尝试(使用cURL)时,它将尝试下一个id,如果已经有一个使用该id的条目,则执行相同的操作,并且它将继续发生,直到它到达未使用的id。我也使用flask-sqlalchemy扩展,如果那是相关的。
答案 0 :(得分:0)
使用**post_args
添加question_obj json数据类型具有索引,该索引将转换为行ID,类似于为同一行指定多于id = 1
id = 1