使用Pandas + pymysql操作mysql数据库

安装

pip install SQLAlchemy
import pymysql
import pandas as pd
from sqlalchemy import create_engine

sql = 'select * from company_sql'
con = create_engine('mysql+pymysql://root:root@localhost:3306/demo?charset=utf8')
df = pd.read_sql(sql, con)

补充说明:'mysql+pymysql://user:password@host:port/db?charset'

查询

# 使用数据库的查询
sql = 'select * from company_sql where companySize = "50-150人" '

# 直接使用pandas
df[df['companySize'] == '50-150人']
# 两种方式都是可行的,主要看性能

实战进阶


对连接数据库的方式做一个简单的优化

def read(sql):
#     每次调用方法就可以快速的操作各个表
    con = create_engine('mysql+pymysql://root:root@localhost:3306/demo?charset=utf8')
    df = pd.read_sql(sql, con)
    return df

合并

company_id = read('select * from company_sql')
company = read('select * from dataanalyst_sql')
company_all = pd.merge(company, company_id, on='companyId')
company_all

分组的使用

c = company_all.groupby(['city', 'companyFullName']).count()['positionId']       
 #使用 .reset_index()
c.head()

查看数据类型

c.info()
c.dtypes

保存到数据库

# name: 数据库名称,可以是存在的,也可以是不存在的
# if_exists:存在就加入,不存在就创建新的
# index:False不要把索引加入数据库中
c.to_sql(name="new_table", 
con='mysql+pymysql://root:root@localhost:3306/demo?charset=utf8', 
if_exists='append', index=False)

问题补充:最后你可能发现,数据库中字段的类型是这样的

使用Pandas + pymysql操作mysql数据库_第1张图片
image.png

并不是我们想要的形式,所以如果你比较追求完美的话,建议先把表,字段建好!!!!!

你可能感兴趣的:(使用Pandas + pymysql操作mysql数据库)