gpt4 book ai didi

python - SQLAlchemy 中的 conn.execute ('some string' ) 和 conn.execute(text ('some string' )) 有什么区别?

转载 作者:行者123 更新时间:2023-12-05 05:09:41 26 4
gpt4 key购买 nike

conn.execute('some string') 和 SQLAlchemy 中的 conn.execute(text('some string')) 有什么区别?

上面conn是通过conn = engine.connect()获取的。而引擎是通过create_engine方法获取的。 text() 方法是从 sqlalchemy.sql 导入的。

我看到 conn.execute('some string')conn.execute(text('some string')) 出现在教程中,但不同之处在于没有解释。参见示例 here

亲切的问候

最佳答案

text() 的官方文档很好地回答了这个问题:

The advantages text() provides over a plain string are backend-neutral support for bind parameters, per-statement execution options, as well as bind parameter and result-column typing behavior, allowing SQLAlchemy type constructs to play a role when executing a statement that is specified literally.

其中您可能更常用的是对绑定(bind)参数的后端中立支持。 PEP 249 — DB-API 2.0 规范指定了一堆不同的 paramstyles一个实现可以使用。例如,sqlite3 模块使用 qmark,而 psycopg2 使用 format 和 pyformat。使用 text(),您始终可以只使用命名样式,SQLAlchemy 会将其转换为您的 DB-API 驱动程序正在使用的样式。

您可能会遇到的另一个问题是在使用 IN 子句和不支持类似 psycopg2s tuples adaptation 的驱动程序时定义绑定(bind)参数行为。 .传统上,您必须将所需数量的占位符格式化为查询,但最新版本的 SQLAlchemy 支持 "expanding" bind parameters这消除了手动处理的需要,并允许将序列视为单个参数。

关于python - SQLAlchemy 中的 conn.execute ('some string' ) 和 conn.execute(text ('some string' )) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57364865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com