0

我有这个代码:

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.)

但我不知道该怎么做。任何想法 ?

4

1 回答 1

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 注入攻击。

于 2013-08-02T09:02:39.330 回答