鑒于:letters = list("abc")我想獲得的所有行characters包含在任何信件letters在他們的c列。我可以做到這一點,但只能使用 python 的字符串操作,鑒于它的漏洞,這是不合適的。理想情況下(我的示例已簡化)這將使用 GLOB 子句。例如>>> cur.execute(**the statement here**)>>> print(cur.fetchall())>>> [('a',), ('b',), ('c',)]創建數據庫:import sqlite3import stringdef char_generator(): for c in string.ascii_lowercase: yield (c,)con = sqlite3.connect(":memory:")cur = con.cursor()cur.execute("create table characters(c)")cur.executemany("insert into characters(c) values (?)", char_generator())
1 回答

桃花長相依
TA貢獻1860條經驗 獲得超8個贊
也許這個樣本可以幫助你。
import sqlite3
import string
def char_generator():
for c in string.ascii_lowercase:
yield (c,)
con = sqlite3.connect(":memory:")
def initdb():
cur = con.cursor()
cur.execute("create table characters(c)")
cur.executemany("insert into characters(c) values (?)", char_generator())
def search(value):
values = [c for c in value]
cur = con.cursor()
cur.execute('SELECT * FROM characters WHERE c IN ({0})'.format(','.join(['?' for c in values])), values)
return cur.fetchall()
if __name__ == '__main__':
initdb()
print(search("abcde"))
此代碼使用參數。因此您無需擔心 SQL 注入。
添加回答
舉報
0/150
提交
取消