我有这段代码:
cur.execute("SELECT * FROM foo WHERE date=?",(date,))
for row in cur:
list_foo.append(row[2])
cur.execute("SELECT * FROM bar WHERE date=?",(date,))
for row in cur:
list_bar.append(row[2])
它工作正常,但我想自动化。我已经在我的sqlite数据库中列出了一个表,我想要这样的东西:
table_list = ['foo','bar']
for t in table_list:
cur.execute("SELECT * FROM "+t+" WHERE date=?",(date,))
for row in cur:
# and here I’d like to append to the list which name depends of t (list_foo, then list_bar, etc.)
但我不知道该怎么做。有什么想法吗?
答案 0 :(得分:3)
使用词典收集数据。不要尝试为每个列表设置新的本地名称。
您也可以使用字符串模板,并使用列表推导将结果行转换为列表:
data = {}
for t in table_list:
cur.execute("SELECT * FROM {} WHERE date=?".format(t), (date,))
data[t] = [row[2] for row in cur]
一个警告:只能使用预定义的表名列表;不要在没有大量转义的情况下插入不受信任的输入,以防止SQL注入攻击。