繁体   English   中英

我可以设置modin的并行read_sql函数的隔离级别吗?

[英]Can I set the isolation level of modin's parallel read_sql function?

我有一些 python 代码,我试图用它来使用 sqlalchemy 和 modin 从我的数据库中并行读取未提交的内容。 我尝试将函数调用为: df = pd.read_sql("select * from my_table", uri_string, params={'isolation_level': 'READ UNCOMMITTED'}) 但是,我看到生成的查询在没有隔离级别的情况下提交到我的数据库。 在调用 read_sql 之前,有没有人能够在不创建 sqlalchemy 引擎的情况下注入隔离级别?

编辑:与熊猫不同,modin 的实现允许 read_sql 并行运行。 该实现的一部分意味着我编写的任何查询都将被包装到几个子查询中,例如select * from (select * from my_table) limit 100 offset 200; . 因此,语句级隔离不在表中,无需调整此实现。 此外,这个实现需要一个 sqlalchemy URI 字符串,而不是一个可以被许多工作人员序列化的引擎或连接。 因此,如果我要从连接字符串设置隔离级别,我将需要知道如何在 URI 字符串中注入隔离级别参数。

Db2-LUW 的每个数据库事务都有一个隔离级别,无论您是否明确表示 - 总是有一些默认值。 但是,如果您连接到 Db2-for-i (as/400),这可能不是真的。

您可以选择更改隔离级别的方式和位置。

对于偶尔的查询,您可以使用语句级隔离(只要工具允许),其中 SELECT 语句本身附加了一个可选子句以仅指定该语句的隔离。 例如select whatever from table where... with UR (uncommitted read)。

如果您希望所有动态 SQL 语句具有相同的隔离级别(其中有含义),那么您可以在连接到数据库时指定隔离。 对于使用 CLI 接口的 python(即 cpython),您可以在连接字符串上使用 CLI 设置;TxnIsolation=1; (对于 UR),或通过带有参数IsolationLevel=... db2dsdriver.cfgdb2cli.ini (如果使用)中的数据源定义。 更多细节在这里

如果您使用与特定隔离级别绑定的静态包调用(直接或间接)任何 Db2 例程,那么这将覆盖您之前可能设置的任何其他设置,因此请注意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM