我有以下部分代码
cursor.execute("select titre from article WHERE titre LIKE '%s%%' OR paragraphe LIKE '%s%%' " % (cherche, cherche) )
如果参数(cherche)的值在句子的开头,结果是正确的问题,但是我希望得到所有结果,其中paragraphe和titre包含单词(cherche的值)。
答案 0 :(得分:1)
在替换cherche
的值后,查看此字符串的内容可能会有所帮助。在%
之前不会有cherche
通配符,以便搜索仅返回以<{1}}开始的结果。 Here是SQL通配符的入门读物。
然后我有一些未经证实的建议:不要在SQL语句中使用python格式!使用execute()
built-in substitution 。否则,将受到SQL injection的影响,无论是由一个好心的用户还是因为你自己提供了一个SQL语句。< / p>
您的代码采用sql-sanitizied格式并在结果中的任意位置点击关键字:
cherche
请注意,我使用sql = "select titre from article WHERE titre LIKE :key OR paragraphe LIKE :key "
cursor.execute(sql, key='%'+cherche+'%' )
(和sqlalchemy
)冒号关键字样式语法。 oracle_cx
模块使用问号进行参数替换,不支持关键字样式替换。