我正在尝试使用executemany()通过python将数据提交到Sqlite数据库。我正在从JSON文件中读取数据,然后将其放入数据库中。我的问题是JSON创建不在我的控制之下,并且取决于我从哪个文件获取文件,每次的值顺序都不一样。键是正确的,因此它们与数据库中的键相关联,但我不能只在executemany()函数中抛出值,并且每次都将数据显示在正确的列中。
这是我需要做的事情。
keyTuple = (name, address, telephone)
listOfTuples = [(name1, address1, telephone1),
(name2, address2, telephone2),
(...)]
cur.executemany("INSERT INTO myTable(?,?,?)", keysTuple"
"VALUES(?,?,?)", listOfTuples)
我遇到的问题是某些JSON文件的顺序是“姓名,电话,地址”或其他顺序。我需要能够将我的keysTuple输入到命令的INSERT部分,这样无论JSON文件的顺序如何,我都可以保持我的关系,而不必完全重建listOfTuples。我知道必须有一种方法,但我所写的内容与INSERT部分的正确语法不匹配。 VALUES行工作正常,它使用listofTuples中的每个元素。
很抱歉,如果我没有问正确的问题。 FNG在这里,这是我的第一篇文章。我看了整个网络,但它只产生使用的例子?在VALUE部分,永远不会在INSERT INTO部分。
答案 0 :(得分:0)
您不能将SQL参数(?
)用于表/列名称。
但是当你已经按照正确的顺序排列了列名时,你可以简单地加入它们,以便能够将它们插入到SQL命令字符串中:
>>> keyTuple = ("name", "address", "telephone")
>>> "INSERT INTO MyTable(" + ",".join(keyTuple) + ")"
'INSERT INTO MyTable(name,address,telephone)'
答案 1 :(得分:-1)
试试这个
示例,如果您的表命名产品包含以下字段:
Prod_Name Char(30) UOM Char(10) 参考字符(10) Const Float 价格浮动
list_products = [('Garlic','5 Gr。','Can',1.10,2.00), ('Beans','8 On。','Bag',1.25,2.25), ('苹果','1 Un。','单位',0.25,0.30), ] c.executemany('插入产品值(?,?,?,?,?)',list_products)