读取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)