python连接数据库后,无法感知到数据库的更新

前言

我的个人网站:https://www.gentlecp.com

做项目的过程经常用到数据库,有时候我们需要实时更新数据库的数据到程序中,例如再连接数据库后,数据库某个表中新增了一条数据,将这条数据捕捉到,但有时候会出现查询的数据和上次查询的一样,没有更新数据,这种情况发生在事务型数据库,例如MySQL,即需要commit提交事务的。
【测试环境】
language: python3.6.7
os: windows10
DB: MySQL8.0.13

附:如果不懂python如何连接数据库的可以参考我另一篇文章主流数据库的使用教程

一、无法更新数据原因

因为MySQL事务隔离,InnoDB默认的隔离级别是可重复读(REPEATABLE READ),在同一个事务中读取的值总是一样的。
为了感知到变化,必须重新获取一个事务,理论可解决的方法如下:
1、关闭conneciton重新获取
2、调用commit,将该事务提交
3、改变mysql的事务隔离级别到READ COMMITED
本文演示前两种办法,第三种办法不推荐使用,因为事务本身就是保护操作的,不建议修改事务隔离级别。

二、演示

首先,创建一个数据库和对应的表,用于测试,如下:
在这里插入图片描述
目前有10条数据

基础代码:

import pymysql
import time

database = {
   
    'host': 'localhost',
    'port': 3306,
    'user': 'root',
    
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值