Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用字典插入mysql_Python_Mysql_Mysql Python - Fatal编程技术网

Python 使用字典插入mysql

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

我要执行以下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库都是如此),游标需要一个具有值的元组(用于正确的参数化)。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测试,但根据我过去的工作给出了概念证明