python - 如何使用列表元素更新数据库?

标签 python mysql

我想每 60 秒用列表元素更新我的数据库,我试过这段代码:

   import pymysql
   import random
   import time
   t=[random.randint(1,21) , random.randint(0,99) , random.randint(1,21) , random.randint(1,100)]
   while True:
       conn = pymysql.connect(host="localhost", user="root", password="", db="LEDS")
       myCursor = conn.cursor()
       myCursor.execute("UPDATE DATA SET CAMERA1=t[0]")
       myCursor.execute("UPDATE DATA SET CAMERA2=t[1]")
       myCursor.execute("UPDATE DATA SET CAMERA3=t[2]")
       myCursor.execute("UPDATE DATA SET CAMERA4=t[3]")
       time.sleep(60)
       conn.commit()
       conn.close()

我是 MySQL 的新手,有人可以帮忙吗?

最佳答案

您的解决方案的问题是您传递的列表值并不是真正的列表值。由于您已将它们作为纯字符串传递,因此不会正确执行。您可能应该将 while 循环中的代码更改为如下所示:

while True:
   conn = pymysql.connect(host="localhost", user="root", password="", db="LEDS")
   myCursor = conn.cursor()
   myCursor.execute("UPDATE DATA SET CAMERA1=%i", (t[0],))
   myCursor.execute("UPDATE DATA SET CAMERA2=%i", (t[1],))
   myCursor.execute("UPDATE DATA SET CAMERA3=%i", (t[2],))
   myCursor.execute("UPDATE DATA SET CAMERA4=%i", (t[3],))

您提供的代码的问题是您没有传递列表元素的值,因为您没有在代码中引用它。希望这会有所帮助。

编辑:根据 Dylan Goldsborough 更新了防止 SQL 注入(inject)的答案

关于python - 如何使用列表元素更新数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58025680/

相关文章:

php - 在 Like 运算符中使用变量

python - django 身份验证 URL 的默认命名空间是什么?

python - 如何让 Scrapy 在日志中根据下载请求显示用户代理?

python - 是否可以即时升级 Python 包?

Python 请求.exceptions.ConnectionError : HTTPSConnectionPool : Max retries exceeded with url: [Errno 111] Connection refused)

mysql - 如何链接两个表

python - 删除 agg 创建的标签( ['sum' ,'count' ])

php - 比较具有反斜杠的 php 变量和 mysql 表元素

php - 使用 SUM 和 Group By 连接 2 个表

php - 插入不存在的地方