IN(未重複私は作品これを行う方法があることを知っている:。。Parameter substitution for a SQLite "IN" clause)はなぜこれは機能しませんか? WHERE
私はにこのコードを欠けているものを知っているように思います。私は簡単なテーブルを作成します。次に、レコードの一部を新しいテーブルにコピーします。このテーブルでは、2つのリストを含むWHERE句によってレコードが修飾されます。私は同じレコードをコピーしようとしましたが、今回はSQL文に挿入する変数にリストを入れました。今回は、レコードはコピーされません。
どうしてですか?
import sqlite3
conn = sqlite3.connect(':memory:')
curs = conn.cursor()
oldTableRecords = [ [ 15, 3 ], [ 2, 1], [ 44, 2], [ 6, 9 ] ]
curs.execute('create table oldTable (ColA integer, ColB integer)')
curs.executemany('insert into oldTable (ColA, ColB) values (?,?)', oldTableRecords)
print ('This goes ...')
curs.execute('''create table newTable as
select * from oldTable
where ColA in (15,3,44,9) or ColB in (15,3,44,9)''')
for row in curs.execute('select * from newTable'):
print (row)
curs.execute('''drop table newTable''')
print ('This does not ...')
TextTemp = ','.join("15 3 44 9".split())
print (TextTemp)
curs.execute('''create table newTable as
select * from oldTable
where ColA in (?) or ColB in (?)''', (TextTemp,TextTemp))
for row in curs.execute('select * from newTable'):
print (row)
出力:
This goes ...
(15, 3)
(44, 2)
(6, 9)
This does not ...
15,3,44,9
TIA!
なぜ 'TextTempは= ''()(.splitを "15 3 44 9")に参加'代わりに:あなたは別のプレースホルダあなたのパラメータの値のそれぞれについて、を使用する必要が
ちょうど ''15,3,44,9''の? –
私は不在だったので。 –
それはかなり良い理由です:-) –