我要执行以下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/

10-16 23:16