pandas读取和写入MySQL

        读取MySQL,就用pd.read_sql(),跟pd.read_csv,pd.read_excel一样,非常的好记。          

df=pd.read_sql(sql,con,index_col=None,coerce_float=True,params=None,parse_dates=None,columns=None,chunksize=Noen)

        sql 为可执行的sql 语句

        con 为数据库的连接,这里可以用pymysql

        我们常用的就是这两个参数

import pandas as pd
import pymysql

con = pymysql.connect(host='localhost',
                      user='root',
                      password='******',
                      database='数据库名',
                      port=3306,
                      charset='utf8')
df = pd.read_sql("SELECT * FROM 表名",con=con)

        写入sql 也是用pd.to_sql(),简单好记,有人性 。

df.to_sql(name,con,flavor=None,schema=None,if_exists='fail',index=True,index_label=None,chunksize=None,dtype=None)

name 参数为要存储的表名,这里不用事先建表,你写个表名它就自己建好了,连表字段都不用写,非常的省事。

con 参数为数据库的连接,这里不能用pymysql,pymysql只会傻傻 的一行一行写。可以用sqlalchemy,它能把一整个DataFrame一把梭哈掉。

if_exists 参数判断是否有重复表名,该参数有3个值:fail表示如果表名重复则不写入,replace表示如果表名重复覆盖原表,append表示追加写入。

import pandas as pd

import sqlalchemy

engine = sqlalchemy.create_engine("mysql+pymysql://root:******@localhost:3306/数据库名?charset=utf8")

df.to_sql(name='表名',con=engine,if_exists='replace',index=True)

你可能感兴趣的:(学习笔记,pandas,mysql,python)