-1

我正在尝试使用 Python 的 pypyodbc 将从 YahooFinance 检索到的数据插入 SQL Server 数据库。

我正在使用下面的代码:

import pypyodbc
import ystockquote

conn = pypyodbc.connect('DRIVER={SQL Server};SERVER=serv;DATABASE=TEST;UID=uid;PWD=pwd')

cur = conn.cursor()

var1 = ystockquote.get_historical_prices('GOOG','201403027','20140411')
data = var1[1:]

columnBased = [[data[i][j] for i in range(len(data))] for j in range(len(data[0]))]

cur.execute("INSERT INTO [TEST].[dbo].[StockData] (Date, OpenPrice, ClosePrice, High, Low, Volume, Adj_Close) VALUES (?,?,?,?,?,?,?,?,?,?,?,?", (data))

cur.commit()
cur.close()

这会产生错误

Traceback (most recent call last):
  File "file.py", line 32, in <module>
cur.execute("INSERT INTO [TEST].[dbo].[StockData] (Date, OpenPrice, ClosePrice, High, Low, Volume, Adj_Close) VALUES (?,?,?,?,?,?,?,?,?,?,?,?", (data))
  File "file.py", line 1458, in execute
self._BindParams(param_types)
  File "file.py", line 1263, in _BindParams
if param_types[col_num][0] == 'u':
TypeError: 'type' object has no attribute '__getitem__'

我可能做错了什么?请注意,我是一名 Python 新手,之前曾使用 MATLAB 进行过此类检索和数据库插入。

4

1 回答 1

0

请原谅我浪费了你的时间,答案其实很简单。我需要使用以下代码修改上述代码:

for item in data:
    cur.execute("INSERT INTO [TEST].[dbo].[StockData] (Date, OpenPrice, ClosePrice, High, Low, Volume, Adj_Close) VALUES (?,?,?,?,?,?,?)", item)
于 2015-02-21T13:35:48.467 回答