我正在尝试从国家证券交易所检索给定股票名称的数据。
我已经在 MySQL 中创建了一个名为“NSE”的数据库。但没有创建任何表。
我使用以下脚本从 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”创建一个表。
最佳答案
在回答之前,我希望代码是模拟的,而不是真正的代码。否则,我建议更改您的凭据。
现在,我相信您正在尝试使用 pandas.io.sql.write_frame
(对于 pandas<=0.13.1
)。但是,您忘记导入该模块,因此解释器无法识别该模块 sql
。要修复它,只需添加
from pandas.io import sql
到脚本的开头。
注意函数调用中使用的参数。您使用if_exists='replace'
,所以表 NSE
每次运行该函数时都会被删除并重新创建。它将包含任何 data
包含。
关于python - 将 pandas 时间序列数据导入本地主机上的 mysql 数据库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47422617/