当前位置: 首页 > 面试题库 >

如何使用MySQLdb从Python更改SQL隔离级别?

吴驰
2023-03-14
问题内容

我在研究此文档时遇到的文档表明,对其他数据库执行此操作的方法是在查询中使用多个语句,例如:

>>> 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(或者可能只是这种实现?)在单个查询中不支持多个记录集。

过去有人在此方面取得过成功吗?


问题答案:

我认为这不适用于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',),)


 类似资料:
  • 我正在尝试使用JobLauncher启动作业,代码如下 我在batchjob.xml中配置了具有相同id的作业 任何帮助都是值得的。Thnks

  • 问题内容: 我想将隔离级别设置为。如何使用gorm orm for postgres实现此目的。 示例代码: 问题答案: 我在这里有完全一样的问题: 和pg完全一样。

  • 我们希望将现有Azure Web应用程序的应用程序服务计划从独立服务计划更改为独立的“v2”服务计划。订阅、资源组或区域没有更改。对我们来说,一个条件是,我们想继续使用相同的Web应用程序,仅更改计划即可。如果可能的话,请告诉我,我们如何改变这一点。 我可以在Azure Portal中看到“更改应用程序服务计划”选项,但我无法通过涉猎了解计划更改的具体情况 我们可以单独创建所需的独立V2计划,但到

  • 问题内容: 如何使用MySQLdb python驱动程序执行* .sql文件中存储的sql脚本。我在尝试 但这不起作用,因为 cursor.execute 一次只能运行一个sql命令。我的sql脚本改为包含多个sql语句。我也在尝试 但也没有成功。 问题答案: 假设文件中每行有一条SQL语句。否则,您将需要编写一些规则以将行连接在一起。

  • 我需要在SQL服务器中实现一个可序列化的隔离级别,但是我已经尝试了很多方法,但我没有得到它。 我需要在一个事务中锁定 1 行(是否锁定整个表并不重要)。因此,另一个事务甚至无法选择该行(不读取)。 我尝试的最后一件事: 对于交易1: 对于交易2: 我希望事务2一直等到事务1提交操作,但是事务2给了我行。 如果我错过了什么,谁能解释我?

  • 问题内容: 如何使用pip为Python 安装MySQLdb模块? 问题答案: 这很容易,但是很难记住正确的拼写: 如果您需要1.2.x版本(仅限旧版Python),请使用 注意:运行上述命令时,某些依赖项可能必须存在。关于如何在各种平台上安装这些的一些提示: Ubuntu 14,Ubuntu 16,Debian 8.6(jessie) Fedora 24: 苹果系统 如果失败,请尝试