此系列文章是《数据蛙三个月就业班》股票数据分析案例的总结,整个案例包括linux、shell、python、hive、pycharm、git、html、css、flask、pyechart、sqoop等的使用,为了让就业班同学能够更好的学习,所以对上面大家有疑问的内容进行了总结。本篇是股票数据分析案例第二篇总结---python 链接mysql数据库
本文阅读路线:
- python 和mysql 链接的引擎
- Python 和各种引擎的结
- pandas 和各种引擎的结合使用(数据分析同学常用)
一:python 和mysql 链接的引擎
我们一般常用的mysql引擎,主要有下面的几个
1.Python-MySQL
Python-MySQL资格最老,又叫 MySQLdb,核心由C语言打造,是 Python 连接 MySQL 最流行的一个驱动,但是只支持python2.x;由于安装的时候有很多前置条件,并且是基于C语言的库,所以在 Windows 平台安装非常不友好,经常会报错,现在基本不推荐使用,取代的是它的衍生版本。
2.mysqlclient
由于 MySQL-python 年久失修,后来出现了它的 Fork 版本 mysqlclient,完全兼容 MySQLdb,同时支持 Python3.x,是 Django ORM的依赖工具。安装方式和 MySQLdb 是一样的,Windows 可以在 此网站找到 对应版本的 whl 包下载安装。
3.PyMySQL
PyMySQL 是纯 Python 实现的驱动,速度上比不上 MySQLdb,最大的特点可能就是它的安装方式没那么繁琐,同时也兼容 MySQLdb,这样就可以方便使用MySQLdb了,如下
import pymysql
pymysql.install_as_MySQLdb()#只有这行使用了才能使用下行
import MySQLdb
要要学习通过pymysql使用MySQLdb,看下文的举例
4.SQLALchemy
这个引擎是即支持原生的SQL,又支持ORM技术:Object-Relational Mapping具体的参考如下。这是开发web时常用的技术,我们做数据分析的同学暂时不要考虑什么是ORM技术了哈
二:Python 和各种引擎的结合使用
下面我们主要介绍PyMySQL这种引擎的使用了,这个大家用的也是比较多的
1.1PyMySQL的使用
# @Time : 2019/8/27 7:35
# @Author : datafrog!!
# @FileName: dataFrogTest.py
# @Software: PyCharm
# !/usr/bin/python3
import pymysql
# 打开数据库连接(ip,username,userpassword,databases)
db = pymysql.connect("localhost", "root", "123456", "world")
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 插入语句
sql = "select * from world.city limit 1"
try:
# 执行sql语句
cursor.execute(sql)
results = cursor.fetchall()
print(results)
except:
# 发生错误时回滚
db.rollback()
# 关闭数据库连接
db.close()
运行代码,能够打印出一行数据库中的数据如下:
1.2在pymysql下使用MySQLdb
#!/usr/bin/python3
# import pymysql
import pymysql
pymysql.install_as_MySQLdb()
import MySQLdb
# 打开数据库连接(ip,username,userpassword,databases)
db = MySQLdb.connect("localhost", "root", "123456", "world")
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 插入语句
sql = "select * from world.city limit 1"
try:
# 执行sql语句
cursor.execute(sql)
results = cursor.fetchall()
print(results)
except:
# 发生错误时回滚
db.rollback()
# 关闭数据库连接
db.close()
运行代码,也是能够打印出结果来
三:pandas 和各种引擎的结合使用
pandas 使用mysql引擎,才是数据分析同学打开的正确方式哈。
1.1 pandas和pymysql 结合读取mysql数据
import pandas as pd
# 下面传入的参数依次是(ip,username,userpassword,databases)
conn = pymysql.connect("localhost", "root", "123456", "world")
sql="select * from city limit 5"
df=pd.read_sql_query(sql,conn)
print(df.head())
一起看下结果
1.2 pandas 和pymysql 结合写入mysql数据
import pandas as pd
import pymysql
#参数依次是(ip,username,userpassword,databases)
conn = pymysql.connect("localhost", "root", "123456", "world")
sql="select * from city limit 5"
df=pd.read_sql_query(sql,conn)
#if_exists有下面几个参数{‘fail’, ‘replace’, ‘append’}
df.to_sql('test',conn,if_exists='append')
2.1 pandas和SQLALchemy 结合读取mysql数据
#!/usr/bin/python3
import sqlalchemy
from sqlalchemy import create_engine
import pandas as pd
#依次传入的参数是(username,userpassword,ip,databases)
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/world?charset=utf8')
sql="select * from city limit 5"
df=pd.read_sql_query(sql,engine)
print(df.head())
image.png
2.2 pandas和SQLALchemy 结合写入mysql数据
#!/usr/bin/python3
import sqlalchemy
from sqlalchemy import create_engine
import pandas as pd
#依次传入的参数是(username,userpassword,ip,databases)
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/world?charset=utf8')
sql="select * from city limit 5"
df=pd.read_sql_query(sql,engine)
#if_exists有下面几个参数{‘fail’, ‘replace’, ‘append’}
df.to_sql('test',engine,if_exists='append')
关于mysql的引擎介绍和使用,我们已经总结完了,建议同学们下面也要学习下面这几个函数的文档read_sql()、read_sql_query()、read_sql_table、to_sql()
网友评论