pandas和数据库进行连接及

SciPy.org — SciPy.org  https://www.scipy.org/

Python Data Analysis Library — pandas: Python Data Analysis Library  http://pandas.pydata.org/

pandas_360百科  https://baike.so.com/doc/25250734-26252486.html

SQLAlchemy 教程 —— 基础入门篇 - 吃咯 - 博客园  https://www.cnblogs.com/mrchige/p/6389588.html

SQLAlchemy Documentation — SQLAlchemy 1.2 Documentation  http://docs.sqlalchemy.org/en/latest/

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

pandas中主要是以sqlalchemy方式与数据库建立链接
支持Mysql、postgresql、Oracle、MS SQLServer、SQLite等主流数据库


本例以MySql为代表,展示将从tushare中获取到的股票数据存入数据库的方法,其他类型数据库请参考sqlalchemy官方文档的create_engine部分
tushare中的数据展示
TuShare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工到数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据。

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

Python财经数据接口包TuShare的使用_百度经验  https://jingyan.baidu.com/article/3065b3b68d7fb5becff8a494.html

控制台窗口:pip install tushare

控制台窗口:pip install tushare --upgrade

import tushare as ts  
import pandas as pd  
from sqlalchemy import create_engine 
ts.get_hist_data('601111').head(1000)  #获得1000条数据

Python财经数据接口包TuShare的使用_百度经验  https://jingyan.baidu.com/article/3065b3b68d7fb5becff8a494.html

 

df = ts.get_hist_data('000875')#读取数据,格式为DataFrame  
engine = create_engine('mysql://root:[email protected]/tushare?charset=utf8')#用sqlalchemy创建引擎  
df.to_sql('tick_data',engine,if_exists='append')#存入数据库,这句有时候运行一次报错,运行第二次就不报错了,不知道为什么  
df1 = pd.read_sql('tick_data',engine)#从数据库中读取表存为DataFrame  

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

df1 = pd.read_sql('tick_data',engine,index_col='date',parse_dates=['date'])

parse_dates参数可以不填的,因为tushare中读出来的DataFrame的索引也不是datetime格式的。

Pandas读取MySQL数据到DataFrame,数据库连接:

连接方法一:

#-*- coding:utf-8 -*-
from sqlalchemy import create_engine
class mysql_engine():
    user='******'
    passwd='******'
    host='******'
    port = '******'
    db_name='******'
    engine = create_engine('mysql://{0}:{1}@{2}:{3}/{4}?charset=utf8'.format(user,passwd,host,port,db_name))
def get_data(sql):
    pg_enine=mysql_engine()
    try:
        with pg_enine.engine.connect() as con, con.begin():
            df=pd.read_sql(sql,con)# 获取数据
        con.close()
    except:
        df=None
    return df

数据库连接方法二:

conn = MySQLdb.connect(host="******",user="******",passwd="******",db='******',port = ******,charset="utf8")
sql = "select * from ****** limit 3"
df = pd.read_sql(sql,conn,index_col="id")
print df

 

 

 

 

你可能感兴趣的:(数据库,python,pandas)