热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql端口调用pymysql_使用PyMySQL操作MySQL数据库

安装pip3installPyMySQL或者python3-mpipinstallPyMySQL连接MySQL数据库注意:连接之前先确保你已经安装MySQL数据库MY

安装

pip3 install PyMySQL或者python3 -m pip install PyMySQL

连接MySQL数据库

注意:连接之前先确保你已经安装MySQL数据库

MYSQL_CONFIG = {

'host': 'localhost', # IP地址

'port': 3306, # 端口

'user': 'root', # 用户名

'passwd': '123456', # 密码

'db': 'myclass', # 数据库

'charset': 'utf8', # 编码

}

conn = pymysql.connect(**MYSQL_CONFIG) # 数据库连接

cur = conn.cursor() # 游标对象

MYSQL_CONFIG中的指标为连接数据库的重要参数,参数的相关说明请看以上注释,相关参数的值请换成你自己的。

本人习惯将参数以字典的方式存储,并在连接时用两个*号来对字典进行解包(有兴趣的小伙伴可以自行搜索python容器解包的相关知识),这样做的好处就是可以抽取关键数据,并将数据放在可配置化脚本中。

当然,你也可以用关键字参数的形式把数据写到connect()方法中,如pymysql.connect(host = 'localhost', port = 3306, ...)

创建连接后我们可以得到一个数据库连接对象conn和游标对象cur

执行SQL查询语句

成功连接数据库后,我们就可以执行相关的SQL语句来增删改查我们的数据了。

myclass数据库中存在student表,我们执行SQL语句来查询student表中的数据

数据表如下

name

age

height

Mary

18

155.0

Tony

20

175.0

Lisa

19

165.5

执行SQL语句需要用到cur对象中的execute()方法

执行后获取数据的方法主要有以下三种:

fetchone(): 获取下一个查询结果集,结果集是一个对象,第一次执行取SQL结果集的第一条数据

fetchmany(n): 获取前n条数据的结果集

fetchall(): 获取全部的数据结果集

fetchone

sql = "SELECT * FROM student"

n = cur.execute(sql) # 执行后得到数据的条数

for i in range(n):

print(f'--这是第{i + 1}条数据--')

info = cur.fetchone()

print(info)

执行结果如下

--这是第1条数据--

('Mary', 18, 155.0)

--这是第2条数据--

('Tony', 20, 175.0)

--这是第3条数据--

('Lisa', 19, 165.5)

n值是执行查询语句返回的结果条数,fetchone()第一次执行取的是第一条数据,之后执行就是取下一条数据,遍历n就可以取到每一条数据。

fetchmany

sql = "SELECT * FROM student"

n = cur.execute(sql) # 执行后得到数据的条数

info = cur.fetchmany(2) # 取前面两条数据

print(info)

执行结果如下

(('Mary', 18, 155.0), ('Tony', 20, 175.0))

fetchmany()可以取执行结果集的任意条数据,如果取n则返回全部数据的数据集。

fetchall

sql = "SELECT * FROM student"

n = cur.execute(sql) # 执行后得到数据的条数

info = cur.fetchall() # 取所有数据

print(info)

执行结果如下

(('Mary', 18, 155.0), ('Tony', 20, 175.0), ('Lisa', 19, 165.5))

fetchall()就是取执行结果的所有数据的数据集

执行SQL插入语句

上面已经对PyMySQL中SQL的查询方式进行了简单的说明和实现,至于其他的增、删、改操作其实跟上面的查询操作差不多,主要还是使用到cur对象的execute()方法来执行。

但是执行增、删、改操作时需要注意的是,在使用execute()方法执行SQL语句后,还要在后面加一句conn.commit(),用于将事务提交到数据库执行。

如下

sql = "INSERT INTO student VALUES ('Ben', 19, 166.5)"

cur.execute(sql) # 执行

conn.commit() # 提交

执行成功后,可以通过查询方法fatchall查看结果,结果如下

(('Mary', 18, 155.0), ('Tony', 20, 175.0), ('Lisa', 19, 165.5), ('Ben', 19, 166.5))

可以看到最后面多了一条新的数据,说明数据插入成功。

删和改的操作跟插入是一样的,在这里就不做过多演示了,有兴趣的小伙伴可以自己尝试去实现。

务必记得要加上commit()语句哦,否则执行后不会发生任何变化。

关闭数据库

在执行完增、删、改、查操作后,最后一定记得要关闭游标和数据库连接,以避免数据库资源的消耗和产生不同连接之间的冲突。

关闭语句如下

cur.close() # 关闭游标

conn.close() # 关闭数据库连接



推荐阅读
  • Python操作MySQL(pymysql模块)详解及示例代码
    本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • EzPP 0.2发布,新增YAML布局渲染功能
    EzPP发布了0.2.1版本,新增了YAML布局渲染功能,可以将YAML文件渲染为图片,并且可以复用YAML作为模版,通过传递不同参数生成不同的图片。这个功能可以用于绘制Logo、封面或其他图片,让用户不需要安装或卸载Photoshop。文章还提供了一个入门例子,介绍了使用ezpp的基本渲染方法,以及如何使用canvas、text类元素、自定义字体等。 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • 本文讨论了如何使用GStreamer来删除H264格式视频文件中的中间部分,而不需要进行重编码。作者提出了使用gst_element_seek(...)函数来实现这个目标的思路,并提到遇到了一个解决不了的BUG。文章还列举了8个解决方案,希望能够得到更好的思路。 ... [详细]
author-avatar
邱喷壶_381
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有