一分的情況下,與回答重複的問題顯示在:Parameter substitution for a SQLite "IN" clause如何將數據類型從整數轉換爲文本?
我想將數據從oldTable
的ColA
和ColB
複製到newTable
。 ColA
和ColB
的oldTable
具有INTEGER
的數據類型。
通過複製數據,我還想檢查ColA or ColB
是否是字符串的一部分(在本例中爲TextTemp
)。
我的問題是:ColA
和ColB
有INTEGER
的數據類型,以及TextTemp
是TEXT
格式。不能比較不同的數據類型。
這樣的問題:我如何才能在ColA
和ColB
轉換數據從INTEGER
到TEXT
?
這是我在Python中的代碼。應該複製ColA or ColB
中的15,3,44和9。
TextTemp = "15 3 44 9" #String format, but all numbers, with empty spaces
TextTemp = "15 3 44 9".split() #Convert TextTemp into TEXT format
cur.execute('''CREATE TABLE newTable AS
SELECT * FROM oldTable
WHERE ColA IN (%s)
OR ColB IN (%s)''' %
(','.join('?'*len(TextTemp)), TextTemp)
(','.join('?'*len(TextTemp)), TextTemp))
錯誤消息:TypeError: not enough arguments for format string
我敢肯定,上面的代碼是非常接近它的最終版本是否正確,但我只是不知道如何去改變它。
PS:我不能使用for循環,所以請幫我解決上述方法中的問題。
執行'TextTemp =「15 3 44 9」.split()'並按照僞指針中的說明操作。除了形成參數化的查詢字符串之外,只需將分割的'TextTemp'作爲第二個參數傳遞給'cur.execute'即可(它將成爲參數序列)。當談到類型時,SQLite相當[寬鬆](https://www.sqlite.org/datatype3.html#comparison_example),所以你應該能夠比較它們。 –
重複適用,除非您需要使用'?'作爲實際最終佔位符 –
@IljaEverilä感謝您的評論和幫助。我試過但沒有發現重複的問題。我更新了我的問題,你可以看看嗎? – doglas