pandas和数据库进行交互(以mysql为例)

  • A+
所属分类:Python

pandas和数据库进行交互(以mysql为例) - 杂 - CSDN博客

pandas和数据库进行交互(以mysql为例)

pandas提供了将数据便捷存入关系型数据库的方法
在新版的pandas中,主要是以sqlalchemy方式与数据库建立链接
支持Mysql、postgresql、Oracle、MS SQLServer、SQLite等主流数据库
本例以MySql为代表,展示将从tushare中获取到的股票数据存入数据库的方法
其他类型数据库请参考sqlalchemy官方文档的create_engine部分

1、用到的模块

1.
import tushare as ts
2.
import pandas as pd
3.
from sqlalchemy import create_engine
2、tushare中的数据展示

TuShare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工到数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据。

考虑到python pandas包在金融量化分析中体现出的优势,TuShare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化。

1561363519770_11.png
3、进行交互

1.
df = ts.get_hist_data('000875')#读取数据,格式为DataFrame
2.

engine = create_engine('mysql://root:[email protected]/tushare?charset=utf8')#用sqlalchemy创建引擎

3.

df.to_sql('tick_data',engine,if_exists='append')#存入数据库,这句有时候运行一次报错,运行第二次就不报错了,不知道为什么

4.
df1 = pd.read_sql('tick_data',engine)#从数据库中读取表存为DataFrame
5.

4、存入之前和存入之后进行比较

存入前DataFrame的info:
1561363519765_10.png
存入后DataFrame的info:
1561363519765_9.png

按上面的方式读取之后还要进行进一步处理才能还原成之前的DataFrame(需要把date设为索引),用下面的读取方式进行读取就和原来的数据一样了:

df1 = pd.read_sql('tick_data',engine,index_col='date',parse_dates=['date'])
parse_dates参数可以不填的,因为tushare中读出来的DataFrame的索引也不是datetime格式的。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin