python - 将 pandas 时间序列数据导入本地主机上的 mysql 数据库时出错

标签 python mysql pandas pymysql

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

我已经在 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/

相关文章:

python - Pandas 按位比较在使用多个条件时抛出异常

python - 安装 pandas 包时出错 : no module named numpy

mysql - SQL、AND、OR 在一条语句中

python - 无法在pycharm中安装BeautifulSoup

python - 带有 MySQL 的 pandas 可以支持文本索引吗?

python - 为什么 asyncio.wait 不等待 FIRST_COMPLETED

mysql - 高度事务性系统中的触发器

mysql - Pandas Dataframe - Mysql 从表中选择 <A 列来自 Dataframe> 中的条件

pandas - 将两个系列按行组合成一个数据框

Python:除了来自外部函数的参数之外,还使用 ​​argparse 读取命令行参数