python - 使用字典插入mysql

标签 python mysql mysql-python

我想要执行以下 SQL 语句:

INSERT INTO myTable (name, year) VALUES ("David", 2016)

有没有一种简单的方法可以使用字典执行上述INSERT:

d = {
  "name": "David",
  "year": 2016
}

也许是这样的:

cursor.execute('INSERT INTO myTable (%s) VALUES (%s)', (d.keys(), d.values())

或者甚至:

cursor.execute('INSERT INTO myTable %s', (d.items(),))

最佳答案

假设 mysql-connector (但大多数 SQL/Python 库都是如此),游标需要一个包含值的元组(用于正确的参数化)。字典本质上是不排序的,因此您需要使用有序字典来使用问题中的第二个示例,并确保键与表列/字段的顺序相同。例如:

from collections import OrderedDict

d = OrderedDict([("name", "David"), ("year", 2016)])

values_tuple = tuple([v for v in d.values()])
q = r'INSERT INTO myTable (%s'
for i in range(len(values_tuple)-1):  # I added first one above so -1
    q += r', %s'
q += ')'

cursor.execute(q, values_tuple)

关于python - 使用字典插入mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35929509/

相关文章:

python - 使用python从redis获取哈希中的最后一项

python - 为什么即使数据库中没有对象,django paginator.num_pages 也会返回一个?

python - python 中的阿拉伯语正则表达式和 MySQLdb

php - 如何将 TOTAL 的结果存储在 MySQL 中,以便可以立即将其插回到表中

python - 在 Windows 7 机器上安装 PyMySQL

python - Django 教程第 4 部分中的 NoReverseMatch 错误

python - numpy arange 中的 else 语句

php - 如何将表单中的数组添加到一起并将它们添加到数据库中的一个字段中?

Java/JDBC/MySQL : How do I troubleshoot why DriverManager. getConnection() 返回 NULL?