返回信息流为什么insert、delete、update都需要commit,select不需要commit呢?[ema13]
这是一条镜像帖。来源:北邮人论坛 / python / #25612同步于 2021/7/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
【问题】pymysql
superheart
2021/7/23镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
【 在 paopjian 的大作中提到: 】
: 前几个是事务啊,数据库要修改的,commit相当于是确认了。select只是纯粹的查询
查了查资料,DML语言(insert,update,delete)都需要显式commit才能生效,我们平时在mysql命令行或者用数据库管理工具进行上述操作时,是默认开启autocommit功能的,可以通过命令show variables like 'autocommit'查看自动提交是否开启。
用pymysql进行数据库连接时,默认关闭自动提交功能,所以需要手动commit。select不属于DML语言,所以不需要commit。[ema37]
这是pymysql的commit()方法说明:
Note that if the database supports an auto-commit feature, this must be initially off. An interface method may be provided to turn it back on.
出自[ema37]https://www.python.org/dev/peps/pep-0249/#commit