为了账号安全,请及时绑定邮箱和手机立即绑定

更新多列:用户名消失

更新多列:用户名消失

杨魅力 2021-09-23 09:39:21
我正在尝试使用 Python 和 SQLite 更新我的用户详细信息。目的是一次性升级我用户的所有列。我的代码是:def update():  new_username = input("Input your NEW username:\n")  new_firstname = input("Input your NEW firstname:\n")  new_lastname = input("Input your NEW lastname:\n")  new_email = input("Input your NEW email:\n")  new_password = input("Input your NEW password:\n")  update_customer =("""UPDATE customer SET username = ? AND firstname = ? AND lastname = ? AND email = ? AND password = ?""")  cursor.execute(update_customer, [(new_username), (new_firstname), (new_lastname), (new_email), (new_password)])我在运行 python 函数之前和之后检查了数据库。但是,更改不会保存到数据库中。除了消失的用户名外,没有任何变化。
查看完整描述

2 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

您不要将 AND 用于要设置的其他列。相反,您用逗号分隔要设置的列。

所以你要

update_customer =("""UPDATE customer SET username = ?, firstname = ?, lastname = ?, email = ?, password = ?""")

如果没有将所有行设置为相同的值,则使用 WHERE 子句。

//img1.sycdn.imooc.com//614bdaf80001d09206900302.jpg

查看完整回答
反对 回复 2021-09-23
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

您需要在完成交易后保存更改。


cursor = conn.cursor() # Get cursor

cursor.execute(...)    # Execute some SQL queries

# This is the line you've missed.

# You need to call this function every time you update the data in database.

cursor.commit()

此外,您的“UPDATE”命令的 SQL 语法不正确。指定要更改的多个列时,请使用逗号而不是“AND”。像这样:


UPDATE table_name

SET column1 = value1, column2 = value2, ...

WHERE condition;


查看完整回答
反对 回复 2021-09-23
  • 2 回答
  • 0 关注
  • 181 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信