小编典典

具有SQL通配符和LIKE的Python字符串格式

python

我很难在python中获取一些sql以正确通过MySQLdb。是pythons字符串格式使我丧命。

我的sql语句使用带有通配符的LIKE关键字。我在Python中尝试了许多不同的方法。问题是一旦我使其中的一个工作,MySQLdb中就有一行代码以字符串格式处理。

尝试1:

“ SELECT tag.userId,count(user.id)作为totalRows,来自用户INNER JOIN标签上的user.id =
tag.userId WHERE user.username LIKE’%% s%’”%(查询)

这是不行的。我得到值错误:

ValueError:索引128处不支持的格式字符’‘’(0x27)

尝试2:

“”选择tag.userId,count(user.id)作为totalRows,来自用户INNER JOIN标签上的user.id =
tag.userId,其中user.username像’\ %% s \%’“%(查询)

我从尝试1得到相同的结果。

尝试3:

like =“ LIKE’%” + str(query)+“%’” totalq =“ SELECT
tag.userId,count(user.id)as totalRows来自用户INNER JOIN标签ON user.id = tag.userId
WHERE user.username “ +喜欢

这可以正确地创建totalq变量,但是现在当我去运行查询时,我从MySQLdb中得到了错误:

执行查询=查询%db.literal(args)中的文件“ build / bdist.macosx-10.6-universal / egg /
MySQLdb / cursors.py”,第158行TypeError:格式字符串的参数不足

尝试4:

like =“ LIKE’\%” + str(query)+“ \%’” totalq =“ SELECT
tag.userId,count(user.id)as totalRows FROM user INNER JOIN标签ON user.id =
tag.userId WHERE用户.username“ +喜欢

这与尝试3的输出相同。

这一切似乎真的很奇怪。如何在python的sql语句中使用通配符?


阅读 220

收藏
2020-12-20

共1个答案

小编典典

这与字符串格式无关,而是问题在于如何根据Python中的db操作要求执行查询(PEP
249

尝试这样的事情:

sql = "SELECT column FROM table WHERE col1=%s AND col2=%s" 
params = (col1_value, col2_value)
cursor.execute(sql, params)

这是psycog2的一些示例,其中有一些对mysql同样有效的解释(mysqldb也遵循PEP249 dba
api指南2.0:这是mysqldb的示例

2020-12-20