Pandas 基础 (19) - 操作数据库 (read_sql, to_sql)

安装两个包:

pip3 install PyMySQL
pip3 install sqlalchemy

连接 Mysql 数据库:

import pandas as pd
import sqlalchemy
engine = sqlalchemy.create_engine('mysql+pymysql://root:root@localhost:3306/express')

这是连接 mysql 数据库的参数规则, 如果是其他数据库, 可参照 官网 下图这个部分

Pandas 基础(19) - 操作数据库 (read_sql, to_sql)

下面就可以从数据库读取数据了:

df = pd.read_sql_table('users', engine)
df

只想读取指定字段也可以:

df = pd.read_sql_table('users', engine, columns=['email', 'mobile'])
df

执行 sql 语句:

query = '''
SELECT nick_name, email from users where id < 5
'''
df = pd.read_sql_query(query, engine)
df

假如你有一份 csv 格式的文件, 想要导入数据库

Pandas 基础(19) - 操作数据库 (read_sql, to_sql)

先把它转成 dataframe 吧:

df = pd.read_csv('/Users/rachel/Sites/pandas/py/pandas/21_sql/customers.csv')
df

输出:

Pandas 基础(19) - 操作数据库 (read_sql, to_sql)

把表头重命名, 要保证跟要插入的数据表的字段名一致, 否则是无法插入的:

df.rename(columns = {
    'nick_name': 'name',
    'Customer Phone': 'mobile',
}, inplace = True)
df

下面就是执行导入数据库的命令了. 第一个参数是指定要导入到哪个表中, 第二个参数是连接用的, 第三个参数是要去掉索引, 第四个参数是指如果数据库里已经有某个值了, 就 keep both, 这个参数值有几种不同的, 比如"覆盖"等.

df.to_sql(
    name = 'admin_users',
    con = engine,
    index = False,
    if_exists = 'append'
)

介绍最后一个函数 pd.read_sql(), 它是 read_sql_table() 和 read_sql_query() 的集合, 也就说它会根据传入的第一个参数自动判断是 table 还是 query:

df = pd.read_sql('admin_users', engine)
df

and:

query = '''
SELECT nick_name, email from users where id < 5
'''
df = pd.read_sql(query, engine)
df

以上就是 Pandas 对数据库的基本操作, 也是 Pandas 基础学习的最后一篇, 我要开始进军 Data Analysis. 耽误好久了, 人笨, 走得慢.......

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!