gpt4 book ai didi

python - 将 python 变量插入 mysql 表的行中

转载 作者:行者123 更新时间:2023-11-29 00:17:29 25 4
gpt4 key购买 nike

我有以下代码解析 XML 文件中的数据。

import MySQLdb
from xml.dom import minidom

xmldoc = minidom.parse("report.xml")

parking_report = xmldoc.getElementsByTagName("parking_report")[0]

sensors = parking_report.getElementsByTagName("sensor")

for sensor in sensors:
id = sensor.getElementsByTagName("id")[0].firstChild.data
date = sensor.getElementsByTagName("date")[0].firstChild.data
time = sensor.getElementsByTagName("time")[0].firstChild.data
status = sensor.getElementsByTagName("status")[0].firstChild.data

db = MySQLdb.connect(host="localhost",user="root",passwd="pass",db="parking_report")
cur = db.cursor()
cur.execute('INSERT INTO report_table (id, date, time, status) VALUES (id, date, time, status)')

print(id, date, time, status)

现在,它可以正常运行并返回每个 parking 传感器的 ID、日期、时间和状态。但是,我的 mySQL 表 (parking_report) 也有列 ID、日期、时间和状态。我想将这些变量的数据插入到这些列下的表中。 (请注意,有三个独立的传感器,所以最后我需要三行数据。)

当我运行它时,它不会插入到我的表中。请帮忙!谢谢。

最佳答案

您没有向查询传递任何参数。

代替:

cur.execute('INSERT INTO report_table (id, date, time, status) VALUES (id, date, time, status)')

创建参数化查询:

cur.execute("""INSERT INTO 
report_table
(id, date, time, status)
VALUES
(%(id)s, %(date)s, %(time)s, %(status)s)""",
{'id': id,
'date': date,
'time': time,
'status': status})

您还应该对代码应用其他修复:

  • 在循环之前定义 dbcursor 变量,这样您就不需要在每次迭代时都连接到数据库并打开游标
  • 您应该正确关闭游标和连接对象
  • 与其在每个迭代步骤调用INSERT 数据库查询,不如考虑将数据收集到一个列表中,然后在循环后插入一次

希望对您有所帮助。

关于python - 将 python 变量插入 mysql 表的行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22469982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com