热门标签 | 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() # 关闭数据库连接



推荐阅读
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了如何找到并终止在8080端口上运行的进程的方法,通过使用终端命令lsof -i :8080可以获取在该端口上运行的所有进程的输出,并使用kill命令终止指定进程的运行。 ... [详细]
  • Firefox火狐浏览器关闭到http://detectportal.firefox.com的流量问题解决办法
    本文介绍了使用Firefox火狐浏览器时出现关闭到http://detectportal.firefox.com的流量问题,并提供了解决办法。问题的本质是因为火狐默认开启了Captive portal技术,当连接需要认证的WiFi时,火狐会跳出认证界面。通过修改about:config中的network.captive-portal-service.en的值为false,可以解决该问题。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 本文讨论了在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下。 ... [详细]
  • FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路
    本文介绍了FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路。当图表系列较多时,用户希望可以自己设置哪些系列显示,哪些系列不显示。通过调用FR.Chart.WebUtils.getChart("chartID").getChartWithIndex(chartIndex).setSeriesVisible()接口,可以获取需要显示的系列图表对象,并在表单中显示这些系列。本文以决策报表为例,详细介绍了实现方法,并给出了示例。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
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社区 版权所有