Skip to main content
 首页 » 编程设计

python /MySQL : Escaping strings used as parameters in raw database queries

2025年05月04日19三少

我正在使用连接/游标将数据从旧数据库/模式迁移到使用 Django 模型构建的新数据库/模式。我遇到带有撇号的名称的问题

简化

business = "Tom's Diner" 
cursor.execute("select * from businesses where name = '" + business + "'")  

这显然会失败,因为我强制使用导致 SQL 语法问题的单引号。如果我这样做会起作用:

business = "Tom''s Diner" 

但由于这是处理迁移数百万行的自动化过程。我正在寻找一种方法来转义我的字符串 before 将其应用于直接 MySQL 查询。

我的问题:是我必须手动做的事情,还是 Django/Python 中有一些函数可以转义字符串,并且可以处理我什至还没有想到的情况,比如字符串中的双引号等。

请您参考如下方法:

试试这个:

cursor.execute("select * from businesses where name = %s ", (business ,)) 

确保第二个参数是元组:(business,) not (business)