微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我有一些 python 代码,我正尝试使用 sqlalchemy 和 modin 从我的数据库中并行读取未提交的代码。我尝试将函数调用为:"Invalid feature flag configuration These feature flags are defined in the "amplify/cli.json" configuration file and are unkNown to the currently running Amplify CLI: - enabledartnullsafety This issue likely happens when the project has been pushed with a newer version of Amplify CLI,try updating to a newer version. Learn more about feature flags: https://docs.amplify.aws/cli/reference/feature-flags" 。但是,我看到生成查询在没有隔离级别的情况下提交到我的数据库。有没有人能够在调用 read_sql 之前在不创建 sqlalchemy 引擎的情况下注入隔离级别?

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

解决方法

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

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

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

如果你希望所有动态SQL语句都具有相同的隔离级别(这有什么意义),那么你可以在连接数据库时指定隔离。对于使用 CLI 接口的 Python(即 cpython),您可以在连接字符串 ;TxnIsolation=1;(对于 UR)上或通过 db2dsdriver.cfg 或 {{1} 中的数据源定义使用 CLI 设置}(如果使用)带有参数 db2cli.ini。 更多详情here

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。