PYTHON:使用 python 变量更新多列

新手上路,请多包涵

我正在尝试编写一个有效的 mysql 语句,该语句允许我使用作为 python 变量提供的值更新一条记录中的多个列。

我的陈述看起来像这样:

 db = MySQLdb.connect(host="localhost", user="user", passwd="password", db="dbname")
cursor = db.cursor()
sql_update = "UPDATE table_name SET field1=%s, field2=%s, field3=%s, field4=%s, field5=%s, field6=%s, field7=%s, field8=%s, field9=%s, field10=%s WHERE id=%s" % (var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, id)
cursor.execute(sql_update)
cursor.close ()
db.commit()
db.close()

在尝试执行查询时,我不断收到有关我的 SQL 语法错误的信息。我找不到它。有人可以指出我的错误或告诉我应该怎么写吗?

原文由 elfuego1 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 341
2 个回答

您正在使用字符串格式,而您应该做的是使用参数化查询。像这样做:

 cursor.execute("UPDATE table_name SET field1=%s, ..., field10=%s WHERE id=%s", (var1,... var10, id))

原文由 shylent 发布,翻译遵循 CC BY-SA 4.0 许可协议

请考虑以下注意事项:

  • 你应该确保用户和密码是正确的
  • 占位符的数量必须与值的数量匹配
  • 您使用的值类型与表中列的类型相匹配

请尝试以下代码:

 db = MySQLdb.connect(host="localhost", user="user", passwd="password", db="dbname")
cursor = db.cursor()
sql_update = "UPDATE table_name SET field1=%s, field2=%s, field3=%s, field4=%s, field5=%s, field6=%s, field7=%s, field8=%s, field9=%s, field10=%s WHERE id=%s"
val =  (var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, id)
cursor.execute(sql_update, val)
db.commit()
cursor.close ()
db.close()

原文由 Mohamed Elghobary 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题