Python sqlite站位符问题

在占位符?处输入引号‘’,结果得不到查询结果


import sqlite3

class sqlite():
    def __init__(self):
        self.conn = sqlite3.connect("./gksj.db")
        self.c = self.conn.cursor()
        print(333)
        
    
    def execute(self,sql,data=()):
        getdata = self.c.execute(sql,data)
        self.conn.commit()
        return list(getdata)

    def executemany(self,sql,data=()):
        getdata = self.c.executemany(sql,data)
        self.conn.commit()
        return list(getdata)
    
    def close(self):
        self.conn.close()



a=sqlite()
 #此处没有查询到
sql = "select * from sheet3 where nf in (?)"
print(a.execute(sql,["'2021','2022'",]))   
 #这里查询正常
sql = "select * from sheet3 where nf in ('2021','2022')"
print(a.execute(sql))

这段代码中存在一个错误。在执行 sql = "select * from sheet3 where nf in (?)"; print(a.execute(sql,["'2021','2022'",])) 时,应该将 ["'2021','2022'",] 修改为 ['2021', '2022'],即将查询条件中的多个值拆分成多个元素,以待查询时作为多个参数传入。修改后的代码如下:

a = sqlite()
# 将多个查询条件拆分成多个元素
sql = "select * from sheet3 where nf in (?, ?)"
print(a.execute(sql, ['2021', '2022']))