首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在使用python的sqlalchemy的execute()和pymysql的查询中转义%?

如何在使用python的sqlalchemy的execute()和pymysql的查询中转义%?
EN

Stack Overflow用户
提问于 2012-06-08 00:23:21
回答 2查看 16K关注 0票数 26

我的问题是:

代码语言:javascript
复制
result = connection.execute(
         "select id_number from Table where string like '_stringStart%' limit 1;")

给出错误:

代码语言:javascript
复制
query = query % escaped_args
TypeError: not enough arguments for format string

一个快速的谷歌说使用%%而不是%,但这也不起作用。我如何转义%,或者是否有其他方法可以查询以随机字母开头的字符串,而不是以某个序列开头?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-13 06:14:01

因为这是一个文字字符串,所以最好在这里使用绑定参数(使用text()进行说明):

代码语言:javascript
复制
from sqlalchemy import text

connection.execute(
    text("select * from table where "
         "string like :string limit 1"), 
    string="_stringStart%")
票数 41
EN

Stack Overflow用户

发布于 2020-11-23 23:33:51

实现绑定参数的另一种方法:

代码语言:javascript
复制
from sqlalchemy import text

connection.execute(
    text("select id_number from Table where string like :string limit 1").\
    bindparams(string="_stringStart%")
)

或者甚至严格地键入:

代码语言:javascript
复制
from sqlalchemy import bindparam, String, text

connection.execute(
    text("select id_number from Table where string like :string limit 1").\
    bindparams(bindparam("string", type_=String)),
    {"string"="_stringStart%"}
)

请记住,SQLAlchemy 1.4不推荐使用text()结构,SQLAlchemy 2.0中将删除该结构。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10935854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档