Python 和 Mysql 引用和变量

标签 python mysql

我遇到了一个我不知道如何解决的问题。

我有这一行:

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/

相关文章:

python - 每当我更改列表大小时,列表索引超出范围

Python datetime 到 Matlab datenum

python - 如何在 scikit-learn 中生成自定义交叉验证生成器?

php - GROUP BY 不适用于许多 MySQL 5.7,因为 5.7 使用 SQL_MODE 的 "ONLY_FULL_GROUP_BY"选项。

mysql - 显示重复记录的最高 3 分

不继承属性的Python子类

python - 无法安装mahotas,并且安装python-dev无法修复错误

mysql - SELECT JOIN WHERE 查询的最佳实践

php - 使用逗号分隔值更新数据库 mysql

mysql - 使用mysql上的三个表获取按类别分组的摘要