将pandas时间序列数据放入localhost上的mysql数据库时出错

时间:2017-11-21 20:59:06

标签: python mysql pandas pymysql

我正在尝试从国家证券交易所检索给定Scrip名称的数据。

我已经创建了一个数据库名称" NSE"在MySQL中。但没有创建任何表格。

我正在使用以下脚本来检索NSE网站上的每分钟数据(假设我想要检索脚本(股票)数据' CYIENT'。

from alpha_vantage.timeseries import TimeSeries
import matplotlib.pyplot as plt
import sys
import pymysql

#database connection
conn = pymysql.connect(host="localhost", user="root", passwd="pwd123", database="NSE")
c = conn.cursor()

your_key = "WLLS3TVOG22C6P9J"
def stockchart(symbol):
    ts = TimeSeries(key=your_key, output_format='pandas')
    data, meta_data = ts.get_intraday(symbol=symbol,interval='1min', outputsize='full')
    sql.write_frame(data, con=conn, name='NSE', if_exists='replace', flavor='mysql')
    print(data.head())
    data['close'].plot()
    plt.title('Stock chart')
    plt.show()

symbol=input("Enter symbol name:")
stockchart(symbol)

#commiting the connection then closing it.
conn.commit()
conn.close()

在运行上述脚本时,我遇到以下错误:

'sql' is not defined.

此外,我不确定上述脚本是否也会在NSE中为(用户输入)股票' CYIENT'创建一个表。

1 个答案:

答案 0 :(得分:1)

在回答之前,我希望代码是模拟,而不是真正的代码。否则,我建议您更改凭据。

现在,我相信您正在尝试使用pandas.io.sql.write_framepandas<=0.13.1)。但是,您忘记导入模块,因此解释器无法识别模块sql。要修复它,只需添加

from pandas.io import sql

到剧本的开头。

注意您在函数调用中使用的参数。您使用if_exists='replace',因此每次运行该函数时都会删除并重新创建表NSE。它将包含data包含的任何内容。