我想每 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/