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()

最新文章

  1. [Erlang 0107] Erlang实现文本截断
  2. [Effective JavaScript 笔记]第53条:保持一致的约定
  3. 关于解决form表单记录上次保存填写记录清空
  4. 深入学习block
  5. 对UIImage进行的一些操作
  6. FoxOne---一个快速高效的BS框架--(2)
  7. C#基于UDP实现的P2P语音聊天工具(1)
  8. MySQL备份说明
  9. golang struct 和 byte互转
  10. css display:flex 属性
  11. 02:安装 Kerberos
  12. 吴裕雄 python 机器学习——逻辑回归
  13. Postfix邮件服务器
  14. 整合shiro出现【Correct the classpath of your application so that it contains a single, compatible version of org.quartz.Scheduler】
  15. java课程作业一,传入字符串求和
  16. <thinkphp51>如何安装cpmposer和tp51
  17. [Ubuntu] 14.04 外接显示器分辨率调整
  18. JVM读书笔记
  19. ORACLE数据库数据的备份与恢复
  20. CF1060C Maximum Subrectangle【乘法分配律】【最大子矩阵】

热门文章

  1. 代码随想录训练营day 4|链表基础理论,移除链表元素,设计链表,反转链表
  2. Fiddler自动响应
  3. 设置view的圆角和阴影
  4. dayjs取 本周、上周、本月、上月、本季度、上季度时间段
  5. java 自定义注解与示例
  6. Mybatisplus-Generator代码生成器-简单示例
  7. 如果同时存在application.properties 和application.yml 文件的话,springboot会优先使用application.properties吗
  8. RabbitMQ异常注意 reply-code=404, reply-text=NOT_FOUND - no exchange 'topic' in vhost '/', class-id=50
  9. element-ui学习之-------input表单验证【各种情况总结】
  10. 001. html篇之《基础内容》