读取股票数据存储到本地MySQL数据库(三)

此篇是将上篇获取到的股票数据存储到本地mysql数据库。

mysql是关系型数据库,为Oracle旗下产品,开源免费。首先下载mysql的安装包,安装完成后设置数据库并启动服务,然后可以通过Navicat可视化客户端查看数据库。

通过pymysql模块处理sql语言的执行,基本操作就是先创建一个数据库的连接conn,然后创建cursor对象,cursor对象通过调用execute函数执行sql命令,可以使用cursor.rowcount返回操作后影响的行数,最后conn.commit函数提交修改。

下边是一个创建表格的操作。

#encoding = utf-8
import pymysql
if __name__ == '__main__':
    conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='mashijia',db='stock',charset='utf8mb4')
    cursor = conn.cursor()
    sql_create_table = "CREATE TABLE stockprice (id int not null auto_increment PRIMARY KEY, date DATE,\
    open float, high float, close float, low float, \
    volume float, chg float, chg_percent float, ma5 float,ma10 float, ma20 float, \
    vma5 float, vma10 float, vma20 float, turnover float)"
    cursor.execute(sql_create_table)
    #sql_insert = "INSERT INTO stockprice (date, open) VALUES ('20160513', 15.44)"
    conn.commit()
    print('创建表格成功!')
    conn.close()
    print('关闭连接')
上篇已经将从凤凰api获取的股票历史数据存储到dataframe中了,接下来就是讲df数据插入到mysql数据库中。

# encoding = utf-8
import pymysql
import pandas as pd

class InsertIntoMysql(object):
    def insert_into_mysql(self, conn, df):
        cursor = conn.cursor()
        sql_insert = "INSERT INTO stockprice (stock_code, date, open, high, close, low, volume, chg, chg_percent, ma5, ma10,\
                      ma20, vma5, vma10, vma20, turnover) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
        for indexs in df.index:
            cursor.execute(sql_insert, (str(df.loc[indexs, 'stock_code']), str(df.loc[indexs, 'date']), float(df.loc[indexs, 'open']),float(df.loc[indexs, 'high']), \
                                        float(df.loc[indexs, 'close']), float(df.loc[indexs, 'low']), float(df.loc[indexs, 'volume']), \
                                        float(df.loc[indexs, 'chg']), float(df.loc[indexs, 'chg_percent']), float(df.loc[indexs, 'ma5']), \
                                        float(df.loc[indexs, 'ma10']), float(df.loc[indexs, 'ma20']), float(df.loc[indexs, 'vma5']), \
                                        float(df.loc[indexs, 'vma10']), float(df.loc[indexs, 'vma20']), float(df.loc[indexs, 'turnover'])))
        conn.commit()
        print('写入成功一只股票数据!')
读取股票数据存储到本地MySQL数据库(三)_第1张图片


你可能感兴趣的:(读取股票数据存储到本地MySQL数据库(三))