【发布时间】:2018-02-07 23:53:44
【问题描述】:
我正在尝试将从 Yahoo Finance 下载的股票市场 csv 数据插入到名为“TEST”的 mysql 表中,该表位于 一个名为“股票”的数据库,但我从 python 得到一个错误代码:
InternalError: (1292, "不正确的日期值: 'Date for column 'date at 第 1 行")
我试图插入的数据有数百行看起来像这样:
1995-03-31,0.141150,0.141150,0.141150,0.141150,0.105375,10000
我尝试将此数据插入的表包含以下列:
date DATE NOT NULL PRIMARY KEY,
open DECIMAL(10,6),
high DECIMAL(10,6),
low DECIMAL(10,6),
close DECIMAL(10,6),
adj_close DECIMAL(10,6),
volume INT,
这是我用来将数据插入表中的python代码
with open('/home/matt/Desktop/python_projects/csv_files/CH8_SG.csv',
'r') as f:
reader = csv.reader(f)
data = next(reader)
query = 'insert into TEST values (%s,%s,%s,%s,%s, %s, %s)'
query = query.format(','.split('%s' * len(data)))
cursor = connection.cursor()
cursor.execute(query, data)
for data in reader:
cursor.execute(query, data)
cursor.commit()
当我运行如上图所示的代码时,出现以下错误
InternalError: (1292, "不正确的日期值: 'Date for column 'date at row 1")
我真的认为我很接近,但我不知道这个错误是怎么回事。 谁能帮帮我?
【问题讨论】:
-
我原本以为您陷入了使用字符串格式化查询的陷阱,然后意识到我不明白
query = query.format(','.split('%s' * len(data)))做了什么。它似乎对测试没有任何作用。然后您再次定义cursor = connection.cursor()。您也使用cursor.commit(),但我认为应该是connection.commit()。 -
在
data = next(reader)之后,执行print(data)。你得到了什么?此外,您的错误可能是由于空行造成的。从您的问题无法判断。 -
print(data) 在 data = next(reader) 之后没有返回任何内容。我又收到了同样的错误信息
-
我将 cursor.commit 更改为 connection.commit(),但仍然收到相同的错误消息。
-
好吧,查看给定行中的日期。
标签: python mysql insert stock-data