如何使用python';在查询中转义%;s sqlalchemy';s execute()和pymysql?

如何使用python';在查询中转义%;s sqlalchemy';s execute()和pymysql?,python,mysql,sqlalchemy,Python,Mysql,Sqlalchemy,我的问题是: result = connection.execute( "select id_number from Table where string like '_stringStart%' limit 1;") 给出了错误: query = query % escaped_args TypeError: not enough arguments for format string 一个快速的谷歌说使用%%而不是%,但这也不起作用。如何转义%或是否有其他方法来查询以随

我的问题是:

result = connection.execute(
         "select id_number from Table where string like '_stringStart%' limit 1;")
给出了错误:

query = query % escaped_args
TypeError: not enough arguments for format string

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

由于这是一个文本字符串,因此最好在此处使用绑定参数(如下图所示):


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

from sqlalchemy import text

connection.execute(
    text("select id_number from Table where string like :string limit 1").\
    bindparams(string="_stringStart%")
)
甚至严格打字:

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%"}
)

请记住,
text()
构造在SQLAlchemy 1.4中已被弃用,并将在SQLAlchemy 2.0中删除。

Hi~,如何将其与SQLAlchemy orm一起使用?@DachuanZhao session.query.filter(table.string.like(“\u stringStart%”)
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%"}
)