用python3操作mysql数据库实现企业级产品参数查询
Python3 MySQL 数据库连接 - PyMySQL 驱动
一、什么是 PyMySQL?
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。
二、PyMySQL 安装
在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装。
PyMySQL 下载地址:https://github.com/PyMySQL/PyMySQL。
如果还未安装,我们可以使用以下命令安装最新版的 PyMySQL:
pip3 install PyMySQL
三、数据库连接
连接数据库前,请先确认以下事项:
- 已经创建了数据库。
- 在数据库中已经创建了表。
- mysql数据库的初始默认用户名为root,密码为toor。
- 在你的电脑上已经安装了PyMySQL 模块。
- 如果您对sql语句不熟悉,可以访问 SQL基础教程。
以上表格展示为作者所使用的产品参数表,字段Partnumber为产品的唯一ID,一个产品对应多个属性(Feature字段),每个产品的属性对应值Value是唯一。
正餐开始:
-
数据量级:共计250万余行记录,字段数总计750万余条,涵盖产品4万余件
-
效率汇报:属性值查询均能控制在2秒内查到对应值,查询效率令人满意
#PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库 import pymysql # 创建pymysql类型的对象db,并连接到我的本地数据库"产品库" db = pymysql.connect("localhost","root","root","产品库" ) #创建游标对象cursor cur = db.cursor()
(1)查询产品ID为03195的产品重量
# 创建mysql查询语句sql2 sql2 = "select * from web_published where Partnumber='03195' and Feature='产品重量'" #让游标对象cursor执行sql2语句,返回值是受到影响的数据量,以int值返回并存储在reCount中 reCount2 = cur.execute(sql2) print(reCount2) #让执行sql2语句之后的游标对象返回执行后的结果,以元组tuple的形式存入data2 data2 = cur.fetchall() print(data2)
执行效果:
(2)查询产品ID为ZCT21N12的短路保护
# 创建mysql查询语句sql3 sql3 = "select * from web_published where Partnumber='ZCT21N12' and Feature='短路保护'" #让游标对象cursor执行sql3语句,返回值是受到影响的数据量,以int值返回并存储在reCount中 reCount3 = cur.execute(sql3) print(reCount3) #让执行sql3语句之后的游标对象返回执行后的结果,以元组tuple的形式存入data3 data3 = cur.fetchall() print(data3)
执行效果:
(3)查询产品ID为ZCP29的产品的所有属性
# 创建mysql查询语句sql4 sql4 = "select * from web_published where Partnumber='ZCP29' " #让游标对象cursor执行sql3语句,返回值是受到影响的数据量,以int值返回并存储在reCount中 reCount4 = cur.execute(sql4) print(reCount4) #让执行sql4语句之后的游标对象返回执行后的结果,以元组tuple的形式存入data3 data4 = cur.fetchall() print(data4)
执行效果:
(4)查询产品ID为ZCKM6H29的本体类型,结果以字典类型数据返回
# 创建mysql查询语句sql5 sql5 = "select * from web_published where Partnumber='ZCKM6H29' and Feature='本体类型'" # cur = db.cursor() cur2 = db.cursor(cursor=pymysql.cursors.DictCursor) ##创建cursor的时候,指定其返回的cursor类型为dict reCount5 = cur2.execute(sql5) # 返回受影响的行数 print(reCount5) data = cur2.fetchall() # 返回数据,返回的是tuple类型 print(data)
执行效果:
(5)结束操作,关闭
#最后关闭游标对象和数据库,防止继续占用进程 cur.close() db.close()