pymysql commit

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 【10月更文挑战第14天】pymysql commit

pymysql commit

在使用 PyMySQL 操作 MySQL 数据库时,commit() 方法用于提交事务,即将未提交的数据库操作永久保存到数据库中。以下是关于 commit() 方法的详细说明:

  1. 作用

    • 确认更改commit() 方法用于确认用户对数据库所做的更改。每当使用 updateinsertdelete 或其他语句更改数据库时,必须提交更改,否则数据库将不会被更新[^1^]。
    • 持久性:当一个事务被提交后,其对数据库的修改才会生效,其他连接才能读取到这些修改后的数据[^3^]。
  2. 使用方法

    • 简单调用:直接在数据库连接对象上调用该方法即可。例如,在执行了插入或更新操作后,可以调用 conn.commit() 来提交事务[^3^]。
    • 事务控制:在进行事务操作时,需要先创建一个数据库连接对象,然后在该连接上进行操作。通过在连接上调用 begin() 方法开启事务,并在事务中执行多个数据库操作。如果执行过程中没有发生异常,则调用 commit() 方法提交事务;否则调用 rollback() 方法回滚事务[^3^]。
  3. 注意事项

    • 自动提交模式:MySQL 默认是自动提交事务的(即 autocommit=1),但 PyMySQL 默认不是自动提交事务的。可以通过设置 autocommit 参数为 True 来启用自动提交模式[^4^][^5^]。
    • 事务状态commit() 方法只有在事务处于活动状态时才能被调用,否则会抛出异常。因此,在调用 commit() 之前,需要先调用 begin() 方法来开启事务[^3^]。
    • 操作范围commit() 方法将会提交包括之前调用 execute() 方法执行的 SQL 语句,但不包括未执行的 SQL 语句[^3^]。

总的来说,PyMySQL 中的 commit() 方法是确保数据库操作原子性、一致性、隔离性和持久性的重要手段。在使用 PyMySQL 操作 MySQL 数据库时,应根据具体需求合理使用 commit()rollback() 方法来管理事务。

pymysql cursor

PyMySQL中的Cursor对象是用来执行SQL语句和获取数据结果的重要部分。以下是对PyMySQL中Cursor对象的详细介绍:

  1. 基本概念

    • 在PyMySQL中,Cursor对象相当于数据库游标,用于执行查询操作并获取结果[^2^][^3^]。它提供了一种在数据库中遍历记录的方式,使得用户可以逐条处理查询结果[^4^]。
  2. 常见类型

    • 普通游标(Cursor):默认创建的游标对象,会将查询结果一次性加载到内存中[^4^]。适用于查询结果较小的场景。
    • SSCursor(无缓存游标):不缓存查询结果,每次只读取一条数据,适用于查询大量数据或网络连接较慢的情况[^1^][^5^]。由于不缓存数据,它在内存使用上更加高效,但不支持返回结果的行数和向后滚动[^4^]。
    • DictCursor:以字典形式返回操作结果,每条记录对应一个字典,其中键为列名,值为对应的值[^4^]。
    • SSDictCursor:结合了SSCursor和DictCursor的特点,既无缓存又以字典形式返回结果[^4^]。
  3. 常用方法

    • execute(query, args=None):执行SQL语句,可以是查询、插入、更新或删除等操作。参数args是可选的,用于传递SQL语句中的参数[^4^]。
    • fetchone():获取查询结果的下一行数据,返回单个序列元组或None(如果已无更多数据)[^4^]。
    • fetchall():获取查询结果的所有行数据,返回序列的序列(如元组的元组)[^4^]。
    • fetchmany(size=None):获取查询结果的前size行数据,默认为1行[^4^]。
    • rowcount:返回最近一次execute()操作影响的行数[^4^]。
    • lastrowid:提供上次修改行的rowid(如果可用)[^4^]。
  4. 注意事项

    • 在使用SSCursor时,需要注意读取数据的间隔问题,因为MySQL的NET_WRITE_TIMEOUT设置可能导致长时间未读取数据时出现异常[^5^]。
    • 当使用SSCursor且结果集未完全读取时,不能使用该游标绑定的连接进行其他数据库操作,需要新的连接来创建新的游标对象[^5^]。
    • 对于大数据量查询,建议使用SSCursor以减少内存消耗[^1^][^5^]。

总的来说,PyMySQL中的Cursor对象是数据库操作的核心组件之一,通过合理选择和使用不同类型的Cursor以及掌握其常用方法,可以高效地进行数据库交互。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
关系型数据库 MySQL 数据库连接
9-13|django.db.utils.OperationalError: (2006, 'Server has gone away') 报错
9-13|django.db.utils.OperationalError: (2006, 'Server has gone away') 报错
|
6月前
|
Shell 开发工具 git
git拉去代码报错"Failed to connect to 127.0.0.1 port 31181: Connection refused"
在克隆`https://example.git/`时遇到错误:"fatal: unable to access 'https://example.git/': Failed to connect to 127.0.0.1 port 31181: Connection refused"。原因是Windows上代理设置未正确关闭,影响了Git配置。解决方法是通过git bash运行命令检查并取消代理:`git config --global http.proxy`和`git config --global --unset http.proxy`。
163 1
 git拉去代码报错"Failed to connect to 127.0.0.1 port 31181: Connection refused"
|
7月前
|
关系型数据库 MySQL
navicate远程mysql时报错: connection isbeing used
如果以上方法都无法解决问题,可能需要进一步查看错误日志或考虑联系 Navicat 官方支持获取更详细的帮助。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
785 0
|
数据库
pymysql的使用
pymysql的使用
|
缓存 Oracle 关系型数据库
Oracle中控制commit的三个参数 commit_write, commit_logging和 commit_wait
Oracle中控制commit的动作有三个参数 commit_write, commit_logging和 commit_wait,按重要性分别说明如下
291 0
|
开发工具 git
git clone 失败解决方法:Failed to connect to 127.0.0.1 port 31181 Connection refused
git clone 失败解决方法:Failed to connect to 127.0.0.1 port 31181 Connection refused
914 1
git clone 失败解决方法:Failed to connect to 127.0.0.1 port 31181 Connection refused
SVN没有update和commit
SVN没有update和commit
469 0
SVN没有update和commit
|
SQL 关系型数据库 MySQL
pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query')
pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query')
1497 0
|
SQL 数据库管理
peewee.OperationalError: too many SQL variables
peewee.OperationalError: too many SQL variables
182 0
|
关系型数据库 MySQL 数据库
mysql_change_user()和mysql_reset_connection()区别在哪
mysql_change_user()和mysql_reset_connection()区别在哪
405 0