一分的情况下,与回答重复的问题显示在: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