如何查看正在执行的事务

一、问题描述

今天在pycharm断点调试代码时,同时在终端执行了一个update语句,该update语句被阻塞终端长时间没有反应。

示例如下:

python 复制代码
def test():
    id_ = data.get('id')  # 假设id_为66
    db.session.query(User).filter_by(id=id_).populate_existing().with_for_update().first()
    print("testing")

在第4行代码(print("testing"))处打上断点,然后运行。当运行到第4行时,在终端执行update修改User表的id为66的数据,会发现被阻塞。

二、原因

对User查询时,加了行锁。事务提交后,行锁才会被释放。

二、解决方法

  1. 方法一

    该示例中代码执行完,事务也就会提交,行锁自然会被释放,此时update语句就会执行完成,不阻塞。

  2. 方法二

    查看正在执行的事务,找到阻塞的事务,kill掉。

    PostgreSQL 中,可以从表 pg_stat_activity 中,查看正在执行的事务和查询。

    Mysql中,可以从information_schema 库的 innodb_trx 表中,查看当前执行中的事务。

相关推荐
linweidong1 小时前
中科闻歌Java面试题及参考答案
java·python·大模型·提示词·ai agent·mcp·rag原理
小玮看世界2 小时前
[Python]OD算法在OD实际运用转化参考清单
开发语言·python·算法
萧鼎2 小时前
2026实战:用 tomlkit 优雅读写 TOML 配置,告别手写解析器
python·开源·教程·python库
小刘在重生~2 小时前
Java 常用类|包装类 装箱拆箱、Integer 缓存面试题
java·python·缓存
2601_962099463 小时前
Python xlwt设置excel单元格字体及格式
python·excel·xlwt·样式设置·单元格格式
奇牙coding1233 小时前
GPT-6-Astra API 接入教程:OpenRouter 路由配置 + Python/curl 示例 + 静默降级踩坑
开发语言·python·gpt·ai
2601_962298273 小时前
Python与Selenium结合的Web自动化测试全流程实践教程
自动化测试·python·selenium·web测试·pageobjectmodel
天衍四九-4 小时前
第一章:从 LLM 到 Agent —— DeepSeek Harness 入门
网络·数据库·人工智能·python
529宝宝起名网4 小时前
用 Python 实现名字寓意评分算法:基于 NLP 语义分析的名字内涵深度评估
python·算法·自然语言处理
2601_962298674 小时前
Python:对象缓存优化机制(CPython)
python·性能优化·内存优化·cpython·对象缓存