如何用变量更新sql表

Posted

技术标签:

【中文标题】如何用变量更新sql表【英文标题】:how update sql table with variable 【发布时间】:2021-01-04 17:27:15 【问题描述】:
def changePassword():
with sqlite3.connect('RealTime.db') as conn: // <sqlite3.Connection object at 0x7ff18eef1a80>
    cur = conn.cursor() //<sqlite3.Cursor object at 0x7ff18ef08420>
    result = request.form
    username = RES['user'] //'RJV@gmail.com'
    t = (username,) //('RJV@gmail.com',)
    user = cur.execute("SELECT * FROM USERS WHERE USERNAME=? ", t).fetchone() //('RJV@gmail.com', 'Roni', '1258')
    if(result.get('oldPass') == newDic(user)['password']):
        newPass = result.get('newPass') //'1234'
        try:
            cur.execute("UPDATE users SET password = newPass WHERE username = username")
            conn.commit()
            return redirect('/')
        except Exception as e:
            print(e)
            return render_template('RealTimeChangePassword.html')
    return render_template('RealTimeChangePassword.html')

嘿,我尝试使用变量 newPass 在用户中更新我的密码 所以我尝试将 newPass 发送到用户名“RJV@gmail.com” 但我不知道它为什么会掉下来

但是当我这样做时:

cur.execute("更新用户设置密码 = 1234 WHERE 用户名 = 'RJV@gmail.com' ")

它的更新...

【问题讨论】:

【参考方案1】:

我认为您需要将设置密码的行更改为:

cur.execute("UPDATE users SET password = ? WHERE username = ?", (username, password))

在您更改用户的密码之前,该用户名为 username 而不是名为例如用户名的用户。 RJV@gmail.com

【讨论】:

抛出一个异常,他只能得到两个参数而不是 3 如果我在括号中标记所有内容,他说他不能得到一个元组 按照规范更新。请再试一次:D 很好,但我只需要替换这个和它的工作(密码,用户名)!谢谢你

以上是关于如何用变量更新sql表的主要内容,如果未能解决你的问题,请参考以下文章

SQL如何用一条SQL语句更新表行

如何用一个数据集更新两个表?

如何用python将dataframe更新原来的sql表

如何用一条SQL语句对比两个表的数据是不是一致

如何用sqlserver 改变一个列按一定的顺序排列,

如何用SQL语句修改一个表的字段,让它不能为空