首发于 Data Talks

Python连接mysql数据库极简教程(pandas)

在网上找了若干篇教程,一顿操作猛如虎之后发现,大多数教程推荐的 MySQLdb好像不行啊,是python 2.x的...这年头不该默认主流python 3.x了嘛?

又针对python 3.x检索了一番,找到了PyMySQL(参见 菜鸟教程-PyMySQL驱动 )。能用是能用,但还是有点不太对啊,这查询出来保存为字符串了,要弄成结构化的还要写for循环...这操作未免也太不python了不是?

所以用"pandas+MySQL"作为关键词第三遍搜索,终于找到了优雅的答案,现整理出来和大家分享。全文分为python 连接、读取、写入 数据库三部分。

Part 1. Python连接数据库

首先,在cmd里安装pandas、sqlalchemy、pymysql三个包(pymysql也可用mysqlconnector替换,两者都可以连接MySQL数据库):

pip install pandas
pip install sqlalchemy
pip install pymysql

初始化数据库连接:

import pandas as pd
from sqlalchemy import create_engine
# 初始化数据库连接
# 按实际情况依次填写MySQL的用户名、密码、IP地址、端口、数据库名
engine = create_engine('mysql+pymysql://root:12345678@localhost:3306/testdb')
# 如果觉得上方代码不够优雅也可以按下面的格式填写
# engine = create_engine("mysql+pymysql://{}:{}@{}:{}/{}".format('root', '12345678', 'localhost', '3306', 'testdb'))

这里“mysql+pymysql://”是指明通过pymysql这个包来连接数据库,也可以使用mysqlconnector;如果是python2.x可以替换为MySQLdb来连接。MySQL的IP地址和端口号,默认为localhost:3306。

Part 2. Python读取数据库

写好查询语句并执行,将结果存入数据框DataFrame:

# MySQL导入DataFrame
# 填写自己所需的SQL语句,可以是复杂的查询语句
sql_query = 'select * from product;'
# 使用pandas的read_sql_query函数执行SQL语句,并存入DataFrame