我有一个SQLLite3数据库,其中包含一个股票价格表,如下所示:
Ticker DateTime Open High Low Close Volume
0 ZUMZ 2011-11-01 00:00:00 21.65 23.24 20.74 22.84 558700
1 ZUMZ 2011-11-02 00:00:00 23.33 23.86 22.58 23.03 543200
2 ZUMZ 2011-11-03 00:00:00 23.28 23.74 21.82 22.67 492100
3 ZUMZ 2011-11-04 00:00:00 22.43 22.86 21.87 22.45 267320
我正在尝试循环遍历符号列表并返回相应的数据。
我可以在列表中返回一个符号的正确结果,如下所示:
tickers = ('AA',)
cursor.execute('SELECT * FROM tbl_USELOC_02 WHERE Ticker=?', tickers)
data = cursor.fetchall()
df = pd.DataFrame(data)
print df
0 1 2 3 4 5 \
0 AA 1951-06-11 00:00:00 0.675918 0.682062 0.675918 0.682062
1 AA 1951-06-12 00:00:00 0.679605 0.686978 0.679605 0.683291
2 AA 1951-06-13 00:00:00 0.682062 0.684520 0.680834 0.683291
3 AA 1951-06-14 00:00:00 0.685749 0.700497 0.685749 0.700497
4 AA 1951-06-15 00:00:00 0.705412 0.710328 0.705412 0.707870
5 AA 1951-06-18 00:00:00 0.705412 0.710328 0.705412 0.707870
但是,如果我尝试用循环做同样的事情,那么:
tickers = ['ZUMZ', 'AA']
for ticker in tickers:
cursor.execute('SELECT * FROM tbl_USELOC_02 WHERE Ticker=?', ticker)
data = cursor.fetchall()
df = pd.DataFrame(data)
print df
...我收到一条错误消息: ' ProgrammingError:提供的绑定数量不正确。当前语句使用1,并且提供了4个。'
有人能告诉我如何对列表中的项目运行查询吗?
答案 0 :(得分:1)
你忘了让ticker
成为元组:
cursor.execute('SELECT * FROM tbl_USELOC_02 WHERE Ticker=?', (ticker,))
您也可以将其列为一个列表:
cursor.execute('SELECT * FROM tbl_USELOC_02 WHERE Ticker=?', [ticker])