列表名称中的变量

时间:2013-08-02 08:59:40

标签: python

我有这段代码:

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

但我不知道该怎么做。有什么想法吗?

1 个答案:

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