2016-04-26 43 views
0

这是我要点与用户表https://gist.github.com/flamingo0208/d888a2ca03a426a231de172599ec11b4sqlalchemy.exc.IntegrityError在DB型号命名元组

我试图发送以下数据来更新用户记录数据库模型

{ 
"id":164, 
"login_id": "abc", 
"accountid": "1234", 
"project_id": "1", 
"status":"Active" 
} 

但我得到

sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (sqlite3.IntegrityError) constraint status_type failed [SQL: 'UPDATE users SET status=?, project_id=? WHERE users.id = ?'] [parameters: ('Inactive', '1', 164) 

status_type是命名为元组(在主旨代码)。为什么我收到的时候我给有效状态字段这个错误?

回答

0

您不能将主键作为更新字段。所以写像

session.query(用户).filter(User.id == 164).update({ “LOGIN_ID” 查询: “ABC”, “ACCOUNTID”: “1234”, “PROJECT_ID”: 1, “状态”:“活动” })

+0

我试着用'{ “LOGIN_ID”: “ABC”, “ACCOUNTID”: “1234”, “PROJECT_ID”: “1”, “状态”: “主动” }'但是我还是同样的错误。我猜“状态”字段有问题 – aaj

0

确定我的用户表定义了

CONSTRAINT status_type CHECK (status IN ('ACTIVE', 'DISABLED') 

由于这种约束检查是失败,因为我是试图通过“活动”,而不是“活跃”。