文章目录
- Python连接MySQL数据库(pymysql)
- 一、准备模块
- 二、连接数据库connect()&cursor()
- 三、对数据库进行操作execute()
- 四、关闭数据库的连接close()
- 处理MySQL的数据及简单可视化
- 一、简单的使用
- 1.查询
- 2.插入
- 3.更新
- 4.删除
- 二、获取数据
- 三、可视化
Python连接MySQL数据库(pymysql)
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2 中则使用 mysqldb。
PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。
一、准备模块
python连接SQL数据库首先需要用到 ”pymysql“ 模块
pip install指令:
pip install pymysql
二、连接数据库connect()&cursor()
用pymysql模块中的connect连接数据库,同时用cursor()函数创建游标,用于接收返回的结果。
import pymysql
# ---------连接--------------
connect = pymysql.connect(host='127.0.0.1', # 本地数据库port=3306 #数据库用的端口号user='root',password='3061945',db='sales',charset='utf8') #服务器名,账户,密码,数据库名称
cur = connect.cursor()
print(cur) #输出一个游标实例
三、对数据库进行操作execute()
连接完成后就可以使用cur.execute()函数对数据库进行操作
# --------------------创建表-----------------
try:create_sqli = "create table sys (id int, name varchar(30),phone int);"cur.execute(create_sqli)
except Exception as e:print("创建数据表失败:", e)
else:print("创建数据表成功;")# ---------------插入---------
try:insert_sqli = "insert into sys values(001, 'xiaoming',123456789);"cur.execute(insert_sqli)
except Exception as e:print("插入数据失败:", e)
else:# 如果是插入数据, 一定要提交数据, 不然数据库中找不到要插入的数据;connect.commit()print("插入数据成功;")
四、关闭数据库的连接close()
# 关闭数据库
cur.close() # 关闭游标
connect.close() # 关闭数据库连接
处理MySQL的数据及简单可视化
一、简单的使用
1.查询
fetchone() 方法获取单条数据.
#!/usr/bin/python3import pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',user='testuser',password='test123',database='TESTDB')# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()# 使用 execute() 方法执行 SQL 查询
cursor.execute("SELECT VERSION()")# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()print ("Database version : %s " % data)# 关闭数据库连接
db.close()
2.插入
db.commit() 提交到数据库执行
db.rollback() 如果发生错误则回滚
对于支持事务的数据库, 在Python数据库编程中,当游标建立之时,就自动开始了一个隐形的数据库事务。
commit()方法游标的所有更新操作,rollback()方法回滚当前游标的所有操作。每一个方法都开始了一个新的事务。
#!/usr/bin/python3import pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',user='testuser',password='test123',database='TESTDB')# 使用cursor()方法获取操作游标
cursor = db.cursor()# SQL 插入语句
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,LAST_NAME, AGE, SEX, INCOME)VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
try:# 执行sql语句cursor.execute(sql)# 提交到数据库执行db.commit()
except:# 如果发生错误则回滚db.rollback()# 关闭数据库连接
db.close()
3.更新
#!/usr/bin/python3import pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',user='testuser',password='test123',database='TESTDB')# 使用cursor()方法获取操作游标
cursor = db.cursor()# SQL 更新语句
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
try:# 执行SQL语句cursor.execute(sql)# 提交到数据库执行db.commit()
except:# 发生错误时回滚db.rollback()# 关闭数据库连接
db.close()
4.删除
#!/usr/bin/python3import pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',user='testuser',password='test123',database='TESTDB')# 使用cursor()方法获取操作游标
cursor = db.cursor()# SQL 删除语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
try:# 执行SQL语句cursor.execute(sql)# 提交修改db.commit()
except:# 发生错误时回滚db.rollback()# 关闭连接
db.close()
二、获取数据
Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。
- fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
- fetchall(): 接收全部的返回结果行.
- rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。
读取数据后再进行处理及可视化
步骤:
1.连接数据库
pymysql.connect()2.创建游标对象
conn.cursor()3.执行sql语句
cur.execute(sql_num)4.接受返回结果
sh = cur.fetchall()5.循环赋值作为xy轴数据
for s in sh: #根据顺序将相应属性数据传入变量v1.append(s[0])v2.append(s[1])
三、可视化
from pyecharts import options as opts
from pyecharts.charts import Scatter, Page
from pyecharts.globals import SymbolType
import pymysql#连接MySQL数据库
conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='3061945',db='sales',charset='utf8')
cur = conn.cursor() #创建一个游标对象 cur
sql_num = "SELECT trade_date,amount FROM stocks where trade_date>='2020-01-01'order by trade_date asc"
cur.execute(sql_num) #execute() 方法执行 SQL 查询
sh = cur.fetchall() #fetchall(): 接收全部的返回结果行.
v1 = []
v2 = []
for s in sh: #根据顺序将相应属性数据传入变量v1.append(s[0])v2.append(s[1])def scatter_splitline() -> Scatter:c = (Scatter().add_xaxis(v1).add_yaxis("成交金额", v2,label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title="2020年企业股票成交金额分析", subtitle="成交金额(万元)"),xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),yaxis_opts=opts.AxisOpts(type_="value",min_=60,axistick_opts=opts.AxisTickOpts(is_show=True),splitline_opts=opts.SplitLineOpts(is_show=True)),toolbox_opts=opts.ToolboxOpts(),legend_opts=opts.LegendOpts(is_show=True)))return c#第一次渲染时候调用load_javasrcript文件
scatter_splitline().load_javascript()
#展示数据可视化图表
scatter_splitline().render_notebook()
plitLineOpts(is_show=True)),
toolbox_opts=opts.ToolboxOpts(),
legend_opts=opts.LegendOpts(is_show=True)
)
)
return c
#第一次渲染时候调用load_javasrcript文件
scatter_splitline().load_javascript()
#展示数据可视化图表
scatter_splitline().render_notebook()

















