簡體   English   中英

使用? 使用Sqlite在Python中的executemany()的INSERT INTO中

[英]Using ? within INSERT INTO of a executemany() in Python with Sqlite

我正在嘗試使用executemany()通過python將數據提交到Sqlite數據庫。 我正在從JSON文件讀取數據,然后將其放入數據庫。 我的問題是JSON的創建不受我的控制,並且取決於我從誰那里獲取文件,每次的值順序都不相同。 這些鍵是正確的,因此它們與db中的鍵相關聯,但是我不能只是將值扔到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部分中。

您不能將SQL參數( ? )用於表/列名稱。

但是,當您已經按正確的順序排列了列名時,只需將它們連接起來即可將其插入到SQL命令字符串中:

>>> keyTuple = ("name", "address", "telephone")
>>> "INSERT INTO MyTable(" +  ",".join(keyTuple) + ")"
'INSERT INTO MyTable(name,address,telephone)'

嘗試這個

如果您具有帶有以下字段的名為product的表,則為示例:

產品名稱字符(30)UOM字符(10)參考字符(10)常量浮動價格浮動

list_products = [('Garlic','5 Gr。','Can',1.10,2.00),('Beans','8 On。','Bag',1.25,2.25),('Apples,'1 Un。','Unit',0.25,0.30),] c.executemany('插入產品值(?,?,?,?,?,?)',list_products)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM