如何使用MySQLdb从Python更改SQL隔离级别?
发布于 2021-01-29 14:58:20
我在研究此文档时遇到的文档表明,对其他数据库执行此操作的方法是在查询中使用多个语句,例如:
>>> cursor = connection.cursor()
>>> cursor.execute("set session transaction isolation level read uncommitted;
select stuff from table;
set session transaction isolation level repeatable read;")
不幸的是,这样做不会产生任何结果,因为显然Python DB API(或者可能只是这种实现?)在单个查询中不支持多个记录集。
过去有人在此方面取得过成功吗?
关注者
0
被浏览
54
1 个回答
-
我认为这不适用于MySQLdb驱动程序;您将不得不发出单独的查询:
cur = conn.cursor() cur.execute("SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED") cur.execute("SELECT @@session.tx_isolation") print cur.fetchall()[0] cur.execute("SELECT * FROM bar") print cur.fetchall() cur.execute("SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ") cur.execute("SELECT @@session.tx_isolation") print cur.fetchall()[0] # output ('READ-UNCOMMITTED',) (('foo',), ('bar',)) ('REPEATABLE-READ',)
MySQLdb游标的execute()方法只能看到第一个查询,直到分号为止:
cur.execute("SELECT * FROM bar WHERE thing = 'bar'; SELECT * FROM bar") print cur.fetchall() # output (('bar',),)