def update_user(user):
session.close()
get_user = session.query(User).filter(User.uniq_id == user.uniq_id).first()
print(get_user.state) # 0
get_user.__dict__.update(user.__dict__)
print(get_user.state) # 2
try:
session.add(get_user)
session.commit()
return True, "complete"
except Exception as exc:
session.rollback()
exc_type, exc_obj, exc_tb = sys.exc_info()
file_name = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
print(str(exc_type) + str(file_name) + str(exc_tb.tb_lineno) + "\n" + str(exc))
return False, str(str(exc_type) + str(file_name) + str(exc_tb.tb_lineno) + "\n" + str(exc))
pass
该函数获取一个包含表格单元格的类(我需要使用另一个类来使用用户数据) 在session.add(get_user)和session.commit()之后,数据库中的值不会更新
get_user.__dict__.update(user.__dict__)
但我没有替代解决方案
如果我使用session.add(User(**user.__dict__))
,我会收到错误消息:
(psycopg2.IntegrityError) duplicate key value violates unique constraint "users_pkey"
答案 0 :(得分:0)
session.query(User).filter(User.uniq_id == user.uniq_id).update(user.__dict__)
我需要使用session.query的更新