使用python操作mysql的时候一般都会使用如下语句:

官方示例

import pymysql.cursors

# 连接到数据库后实际上TCP的连接状态是ESTABLISHED

connection = pymysql.connect(host='localhost',

user='user',

password='passwd',

db='db',

charset='utf8mb4',

cursorclass=pymysql.cursors.DictCursor)

try:

with connection.cursor() as cursor:

sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"

cursor.execute(sql, ('webmaster@python.org', 'very-secret'))

#默认不自动提交事务,所以需要手动提交

connection.commit()

with connection.cursor() as cursor:

sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"

cursor.execute(sql, ('webmaster@python.org',))

result = cursor.fetchone()

print(result)

finally:

connection.close()

在这段代码里,有一个疑惑的点是,我们现在创建了一个连接,但是实例化了多个cursor,我们可不可以使用同一个连接的同一个cursor来重复使用,代码如下

with connect.cursor() as cursor:

cursor.execute("select * from person limit 1")

print(id(cursor))

data = cursor.fetchone()

print(data)

print("=============")

cursor.execute("select * from person limit 1")

print(id(cursor))

data = cursor.fetchone()

print(data)

上面的代码,我们执行完了之后发现查询操作是可以直接使用的,并且不会产生冲突,我们通过打印cursor的地址发现是同一个cursor。

插入操作

with connect.cursor() as cursor:

for id in range(1, 100, 2):

cursor.execute("insert into test(id)values(%d)"%id)

print(id)

id += 1

cursor.execute("insert into test(id)values(%d)"%id)

time.sleep(2)

print(id)

在单进程单线程环境下依然没有问题

删除

with connect.cursor() as cursor:

for id in range(100):

# cursor.execute("insert into test(id)values(%d)" % id)

cursor.execute("delete from test where id=%s"%id)

time.sleep(5)

time.sleep(10)

也没有问题

但是有博客说多进程环境下会出现问题,我一直想重现,但是没有成功,等以后重现了再来更新。

但是

创建了一个 cursor 以后,建议完成一个事务就 commit 一下,不要一直用它,这样一直使用,并不会和数据库完成数据同步,如果操作太多,提交的时候会超时,造成部分数据更新,部分数据丢失,数据不一致且效率低。

并且握着 cursor 期间,数据库端发生改变,也没法和客户端同步。

python pymysql cursors_python pymysql cursor的问题相关推荐

  1. Py之PyMySQL:Python库之PyMySQL的简介、安装、使用方法之详细攻略

    Py之PyMySQL:Python库之PyMySQL的简介.安装.使用方法之详细攻略 目录 PyMySQL的简介 PyMySQL的安装 PyMySQL的使用方法 PyMySQL的简介 PyMySQL包 ...

  2. python mysql倒序_day40:MySQL:python操作mysql:pymysql模块SQL注入攻击

    目录 part1:用python连接mysql 1.用python连接mysql的基本语法 创建连接conn→创建游标对象cursor→执行sql语句execute→获取数据fetchone→释放游标 ...

  3. Python数据库编程pymysql

    Python数据库编程pymysql 一.数据库编程介绍 数据库编程就是针对数据库的操作,通过编写程序的方式,让程序做为数据库的客户端进行数据库操作. 对于MySQL的操作我们可以通过SQL语句,但是 ...

  4. python下载pymysql_Python pymysql

    安装 安装mysql数据库的难度和oracle数据库简直没得比,安装步骤如下: 安装MariaDB yum install mariadb mariadb-server # 安装,centos7默认的 ...

  5. 【python】之pymysql模块,操作mysql数据库!

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBM ...

  6. Python 3 —— 使用 PyMySQL 操作 MySQL8

    PyMySQL 是一个纯 Python 实现的 MySQL 客户端操作库,支持事务.存储过程.批量执行等. PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Py ...

  7. python数据库pymysql_Python——数据库04 Python操作MySQL pymysql模块使用,python,04python,MySQLpymysql...

    PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. Django中也可以使用PyMySQL连接MySQL数据库. PyMySQ ...

  8. python pymysql_python使用pymysql实现操作mysql

    pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持3.x版本. 适用环境 python版本 >=2.6或 ...

  9. Python教程和PyMySQL数据库导航

    介绍 按顺序显示记录可能会有些棘手,因为通常不会按字母顺序输入记录,并且如果ID编号未按1递增,使用记录ID来控制导航将不起作用.一个表中有10条记录(从1到10),已删除记录3.7和9,从而弄乱了顺 ...

最新文章

  1. 2.1.2 数据通信基础知识
  2. 节后开工,请把这9句话写在你的办公桌上!
  3. Mac系统下安装Homebrew后无法使用brew命令
  4. CDH 组件升级:zookeeper升级到 3.4.14
  5. Android通知点击事件传递参数
  6. Quartz.net官方开发指南 第七课 : TriggerListeners和JobListeners
  7. jdk生成keystore、tomcat配置https
  8. redis未授权反弹shell
  9. Struts秘籍之起式:第1.6式:管理Struts配置文件
  10. 【预测模型】基于VMD结合Elman神经网络预测数据matlab代码
  11. 可道云kodexplorer隐藏免费版按钮及简单修改使用方法
  12. IMazing for Mac破解版永久激活方法
  13. Springboot中引入本地jar包,并通过maven打包(解决maven丢包的问题)
  14. 【计算机视觉】张正友棋盘格标定法
  15. 我真的很郁闷,应该振作起来的
  16. 聊聊ADAMoracle去中心化预言机网络服务介绍
  17. 魔兽RPG地图破解及修改方法
  18. workerman 7272端口被占用
  19. (精)反激式开关电源
  20. 用FastAPI加爬虫制作一个涩图API,521就这样自己过。

热门文章

  1. linux 开发组织模式,Linux内核发布模式与开发组织模式(1)
  2. 一文带你学C语言,详细知识点思维导图!
  3. C语言中三块“难啃的硬骨头”
  4. java 多线程池_Java项目中,线程池中线程数量太大会有什么影响?
  5. linux下模仿用户左键,linux 鼠标左右键互换实现代码
  6. 当计算机从硬盘读取数据后 将数据,当计算机从硬盘读取数据后,将数据暂时储存在于()...
  7. java堆内存 和栈内存
  8. FTP开启被动连接模式
  9. MySQL语言解析----1
  10. tomcat源码阅读之Server和Service接口解析