鉴于: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
提交
取消