我在python上尝试过这个sql请求但是没有用

时间:2017-03-14 05:13:39

标签: python sql python-2.7 sqlite

我有以下部分代码

 cursor.execute("select titre from article WHERE titre LIKE '%s%%' OR paragraphe LIKE '%s%%' " % (cherche, cherche)  )

如果参数(cherche)的值在句子的开头,结果是正确的问题,但是我希望得到所有结果,其中paragraphe和titre包含单词(cherche的值)。

1 个答案:

答案 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模块使用问号进行参数替换,不支持关键字样式替换。