Python 使用字典插入mysql
我要执行以下SQL语句:Python 使用字典插入mysql,python,mysql,mysql-python,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('IN
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库都是如此),游标需要一个具有值的元组(用于正确的参数化)。dict本质上是不有序的,因此您需要使用有序dict来使用问题中的第二个示例,并确保键的顺序与表列/字段的顺序相同。例如:
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)
假设mysql connector(但大多数SQL/Python库都是如此),游标需要一个具有值的元组(用于正确的参数化)。dict本质上是不有序的,因此您需要使用有序dict来使用问题中的第二个示例,并确保键的顺序与表列/字段的顺序相同。例如:
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)
在最后一个示例中,您可能需要使用一个
OrderedDict
,但如果您这样做了,它会起作用。@BobDylan能否请您举例说明这将如何起作用作为一个答案,我会接受吗?@David542我手边没有mysql测试,但根据我在过去的测试中所做的工作给出了概念证明。最后一个例子可能需要使用OrderedDict
,但如果你这样做了,它会起作用。@BobDylan你能举一个例子说明这将如何作为答案,我会接受吗?@David542我手边没有mysql测试,但根据我过去的工作给出了概念证明