使用字典插入 mysql
Insert into mysql using dictionary
我想执行以下 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 库都是如此),游标需要一个包含值的元组(用于正确的参数化)。字典本质上是无序的,因此您需要使用有序字典来使用问题中的第二个示例,并确保键的顺序与 table columns/fields 相同。例如:
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)
我想执行以下 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 库都是如此),游标需要一个包含值的元组(用于正确的参数化)。字典本质上是无序的,因此您需要使用有序字典来使用问题中的第二个示例,并确保键的顺序与 table columns/fields 相同。例如:
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)