簡體   English   中英

使用Python在SQLite中進行變量替換

[英]Variable Substitution in SQLite using Python

我試圖弄清楚如何結合兩個SQLite查詢。 他們兩個都可以獨立正常工作,但是當我將它們與AND放在一起時AND它們將無法工作。 我認為問題是我不知道如何正確傳遞變量。 第一個有效的查詢:

var1 = 10
mylist = ['A', 'B', 'C', 'AB', 'AC']
c.execute("SELECT * FROM my_table WHERE column1=(?) ORDER BY RANDOM() LIMIT 1", (mylist[2],))

此行也適用:

params = [5,0,1]
query = ("SELECT * FROM my_table WHERE column2 NOT IN (%s)" % ','.join('?' * len(params)))
c.execute(query, params)

我一直試圖將這兩個語句結合在一起而沒有成功:

query = ("SELECT * FROM my_table WHERE column2 NOT IN (%s) AND column1=(?)" % ','.join('?' * len(params)))
c.execute(query, params, mylist[2])

萬一有人發現這有幫助,我的最終解決方案如下所示:

query = ("SELECT * FROM my_table WHERE column1 = (?) AND column2 NOT IN (%s) ORDER BY RANDOM() LIMIT 1" % ','.join('?' * len(params)))
    c.execute(query, [mylist[2]] + params)

execute()的第二個參數必須是包含所有SQL參數的序列。

因此,您必須使用兩個原始列表中的值構造一個列表:

c.execute(query, params + [list[2]])

暫無
暫無

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

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