python - 如何在数据库之前格式化变量以避免错误

标签 python mysql

我收到这样的错误:

_mysql_exceptions.ProgrammingError: (1064, "您的 SQL 语法有错误;请检查与您的 MySQL 服务器版本相对应的手册,以了解在 't Stop.mp3' LIMIT 1 附近使用的正确语法。第 1 行”)

因为在我选择插入或不插入以下代码之前,我试图将数据库中存在的 URL 与变量中的 URL 进行比较:

`#see if any links in the DB match the crawled link

check_exists_sql = "SELECT * FROM LINKS WHERE link = '%s' LIMIT 1" % item['link'].encode("utf-8") 

cursor.execute(check_exists_sql)`

显然,' 字符以及其他字符可能会导致问题。

如何设置这些 URL 的格式以避免这种情况?

最佳答案

MySQLdb 模块进行插值:

cursor.execute("""SELECT * FROM LINKS WHERE link = %s LIMIT 1""",
    (item['link'].encode("utf-8"),)
)

execute() 函数可以传递要替换到查询中的项目(请参阅 the documentation for execute() )。它会根据数据库查询的需要自动转义内容。

如果您更喜欢使用字典而不是元组来指定要替换的内容:

cursor.execute("""SELECT * FROM LINKS WHERE link = %(link)s LIMIT 1""",
    {'link': item['link'].encode("utf-8")}
)

关于python - 如何在数据库之前格式化变量以避免错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3921075/

相关文章:

python - 比较列表交集的算法

python - 如何在CKAN中制作定制中间件

python - 使用pyaudio进行录音

PHP表单只显示一行

php - 如何让 mysqli 实例在函数中被识别?

mysql - 使用 PyMySQL 的列顺序错误的 SELECT 结果

python - python中的selenium通过相对xpath查找元素

php - PDO ON DUPLICATE KEY UPDATE 不适用于 PHP 5.1.6

mysql - 比较 mysql 时间戳

mysql - SQLServer pyodbc 的 Python 驱动程序比 psycopg2 和带有插入的 mysql.connector 慢得多