文章目录
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/python3
import 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/python3
import 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/python3
import 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/python3
import 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()