python - 如何通过XML数据更快的更新MySQL?

标签 python mysql sql

XMl 有 5000 条“产品”记录,MySQL 中的表有 6000 条“产品”记录,并非所有 xml 记录在数据库中都有对应的记录。我想更快地将数据从 xml 放入 mysql。怎么做?现在完成运行所需的时间是 11 秒。

db = MySQLdb.connect(host="",
                         user="",
                         passwd="",
                         db="")
cur = db.cursor()

DOMTree = minidom.parse(file.xml)
cNodes = DOMTree.childNodes

for i in cNodes[0].getElementsByTagName("product"):
    y = i.getElementsByTagName("code")[0].childNodes[0].toxml()
    z = i.getElementsByTagName("available")[0].childNodes[0].toxml()

    cur.execute("UPDATE product SET stock=%s WHERE ean=%s", (z, y))
db.commit()

最佳答案

Executemany是你的 friend ,你可以收集所有数据并立即推送它们,而不是在for循环中重复执行命令。

data = [
  ('A', 'blabla'),
  ('B', 'test1'),
  ('C', 'test2'),
]
stmt = "UPDATE product SET stock=%s WHERE ean=%s"
cur.executemany(stmt, data)

更多信息请点击这里: http://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-executemany.html

关于python - 如何通过XML数据更快的更新MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29884700/

相关文章:

python - 如何将数据框中的对元组列表转换为列

python - 2D 数组的 Numpy 按元素均值计算

c# - 使用 C# Access 数据库

python - 错误: unhashable type = 'list'

python - 使用 Spotfire 的日期过滤器和相对日期输入框

php - 如何将 MySQL BLOB 转换为 PHP 短裤数组?

PHP While 循环仅适用于三个结果中的前两个?

sql - 避免嵌套查询

mysql - 使用mysql根据用户的最高分数计算用户排名

php - 原则 2 - 如何将 SQL ORDER 连接到另一个表