当前位置: 首页 > 面试题库 >

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

戈华茂
2023-03-14
问题内容

我很难在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语句中使用通配符?


问题答案:

这与字符串格式无关,而是问题在于如何根据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的示例)



 类似资料:
  • 问题内容: 我知道这是一个非常基本的问题,我 想 我知道答案…但我想确认一下。 这些查询真的等效吗? 在没有通配符的情况下使用可能会产生性能开销吗? 我有一个可以选择使用LIKE和通配符的应用程序。SP当前执行类似的操作并附加通配符-我正在考虑仅更新查询以使用like,但是让应用程序根据需要附加通配符。 问题答案: 正如@ocdecio所说,如果优化器足够聪明,那么应该没有区别,但是如果您想确定幕

  • 问题内容: 我正在尝试找到格式化sql查询字符串的最佳方法。在调试应用程序时,我想记录所有sql查询字符串的文件,并且正确格式化字符串很重要。 选项1 这对于打印sql字符串很有用。 如果字符串太长且不适合80个字符的标准宽度,则不是一个好的解决方案。 选项2 这里的代码很清楚,但是当您打印sql查询字符串时,会得到所有这些烦人的空格。 的u ‘\ n选取FIELD1,FIELD2,字段3,字段4

  • 问题内容: 可以说我有一个清单 如何让用户进行通配符搜索? 搜索词:“ th_s” 将返回“ this” 问题答案: 正则表达式可能是解决此问题的最简单方法:

  • 比如说我有这个: 我想做两件事: 1) 使其成为当且仅当用户准确键入<代码>时!测试和其他内容,它将在通道中打印出测试 2)使其成为如果用户键入首先后跟空格和至少一个其他字符串字符,它将打印出——例如:a)不会打印出任何东西,b)(后跟一个空格)不会打印出任何东西,c)不会打印出任何东西,d)不会打印出任何东西,但是e)将打印出, f)将打印出, g)将打印出, and h)将打印出等。 我只知道

  • 主要内容:指定最小输出宽度,指定对齐方式,指定小数精度我们在《 第一个Python程序——在屏幕上输出文本》中讲到过 print() 函数的用法,这只是最简单最初级的形式,print() 还有很多高级的玩法,比如格式化输出,这就是本节要讲解的内容。 熟悉C语言 printf() 函数的读者能够轻而易举学会 Python print() 函数,它们是非常类似的。 print() 函数使用以 开头的转换说明符对各种类型的数据进行格式化输出,具体请看下表。

  • 问题内容: 我需要创建一个可以将int,long,double等类型转换为字符串的格式的字符串。使用Obj-C,我可以通过以下方式进行操作。 怎么做迅速? 问题答案: 我认为这可以帮助您: 结果示例: