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]

1 つの注意点: これは、事前に定義されたテーブル名のリストでのみ行ってください。SQL インジェクション攻撃を防ぐために大がかりなエスケープを行わずに、そのような信頼できない入力を補間しないでください。

于 2013-08-02T09:02:39.330 に答える