python - 在 Django 中使用原始 SQL 打开事务是安全的
问题描述
在 Django(3.1 版)中使用默认设置是安全的:
with connection.cursor() as cursor:
cursor.execute("BEGIN")
# Some SQL operations
commit_or_rollback = "COMMIT" if success else "ROLLBACK"
with connection.cursor() as cursor:
cursor.execute(commit_or_rollback)
或者我之前必须False
使用set_autocommit方法设置自动提交,因为 Django 的自动提交会关闭事务?还是自动提交被隔离了,我的代码不会有问题?
如果您问我为什么要使用原始 SQL 进行事务处理:我已经尝试按照文档指示手动使用事务,但它在多进程环境中存在一些问题,因此我必须使用原始查询来实现
解决方案
好的,我一直在阅读更多内容,在我的项目中进行测试,并在数据库日志中查看 Django 执行的查询。使用带有原始 SQL 的事务似乎是安全的,因为自动提交会通过任何操作开始一个新事务,并且不会干扰其他连接打开的事务
推荐阅读
- c# - 使用 C# 获取 Azure 服务器中的所有数据库
- java - 混合 JDK/JRE 热点/OpenJ9
- javascript - 使用 JavaScript 将最后一个文本框值附加到下一个文本框
- javascript - 如何在初始渲染/重新渲染后根据 DOM 节点信息设置状态?(反应)
- sequelize.js - 如何使用 sequelize 导出数据库
- android - 带有标头和 JSON 正文的 Volley 中的 POST 请求
- format - LiDAR Outter 1-16的输出是什么格式
- java - 结合 hadoop、spark 和 ceph 时出现 UnsupportedFileSystemException
- python - 在 pytz 中查找时区名称是否已弃用
- c# - 如何从另一个窗口调用 MainWindow 方法?