Flasksqlalchemy不更新行
我将 Flask-SQLAlchemy 与本地托管的 postgresql 一起使用,我有这段代码,我应该在用户登录后更新数据库中的用户数据
user_id = current_user.get_id()
print(f"nn user_id: {user_id}nn") #1--->
x = users.query.filter_by(id=user_id).first()
x.sid = request.sid
db.session.commit()
print(f'nn user_object.sid:{x.sid} , request.sid:{request.sid} nn') #2 --->
#1 : userid:1
#2 : x.sid:QKfGvdsL-HGUM-FHHYF, request.sid:QKfGvdsL-HGUM-FHHYF
但是当我查看 pgadmin4 或稍后请求 x.sid 的值时,它总是“空”
我四处看了看,每个人似乎都以与我编写代码的方式相同的方式建议。
值得一提 :
sid column已使用flask.migrate 添加,尚未与表一起创建。- 只是为了确保我的代码中没有任何内容覆盖值后缀,pgadmin4 将空值覆盖为唯一的内容并保持不变,其值没有发生任何变化。
- 我尝试使用
db.session.add(x)但它一直说数据信息已经存在
回答
你可以试试:
db.session.merge(x)
db.session.commit()
此代码创建一个新行,如果它不存在,则更新现有的行。