我遇到了一个我不知道如何解决的问题。
我有这一行:
parse = cur.execute("SELECT * FROM testdb WHERE Match(name) AGAINST ('"The.New.York.Times"' IN BOOLEAN MODE);")
如果我运行:
parse = cur.execute("SELECT * FROM testdb WHERE Match(name) AGAINST ('"The.New.York.Times"' IN BOOLEAN MODE);")
在 mysql 控制台中,它可以工作。但我猜 python 不喜欢 '"The.New.York.Times"'
引号。我该如何解决?
另外,我如何在 python 中使该搜索字符串成为一个变量? 类似的东西
parse = cur.execute("SELECT * FROM testdb WHERE Match(name) AGAINST ('"%s"' IN BOOLEAN MODE);, var1")
?
最佳答案
为了避免 sql 注入(inject)并获得适当的转义,您应该将查询变量作为第二个参数传递给 execute
:
param = '"The.New.York.Times"'
cur.execute("SELECT * FROM predb WHERE Match(name) AGAINST (%s IN BOOLEAN MODE)", (param, ))
关于Python 和 Mysql 引用和变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18058140/