gpt4 book ai didi

python - Sqlalchemy:engine.execute() 的 postgresql paramstyle

转载 作者:行者123 更新时间:2023-11-29 12:14:35 26 4
gpt4 key购买 nike

我使用 sqlalchemy 连接到 postgresql。当我尝试这段代码时:

e = create_engine('')
r = e.execute("select ?", 5)

它给了我:

sqlalchemy.exc.ProgrammingError: (ProgrammingError) syntax error at end of input

对应http://www.sqlalchemy.org/docs/core/connections.html?highlight=engine#sqlalchemy.engine.base.Connection.execute有不同类型的参数样式...经过更深入的研究,我发现 postgresql 方言的默认参数样式是“pyformat”。

有人能告诉我如何在一些例子中使用这个 pyformat 吗?我只想使用占位符或命名占位符来构成 sql 语句。

我试过:

e.execute("select %s, %s;", "test", "test2")

但这也不起作用。

谢谢

编辑:当然,我将有效的连接字符串传递给 create_engine 方法:-)

最佳答案

您链接到的文档直接链接到 PEP 249,它向您展示了不同的样式。

关于 pyformat,它说:

'pyformat' Python extended format codes, e.g. '...WHERE name=%(name)s'

这就是您需要使用的。

通过谷歌搜索“DBAPI pyformat”,第二个链接是指向 psycopg2 documentation 的链接。 .在提到它使用 pyformat 之后,有一个“另见”链接到 a page with loads of examples .

如何使用它的示例在您的原始链接中:

e.execute("select %s, %s;", ("param1", "test"), ("param2", "test2"))

你也可以使用这个语法:

e.execute("select %(param1)s, %(param2)s;", param1="test", param2="test2"))

哪个更好。

关于python - Sqlalchemy:engine.execute() 的 postgresql paramstyle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7077427/

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