MySQLdb输入字符串包含字符串分隔符

时间:2011-02-15 23:00:49

标签: python database migration passwords

我正在使用MySQLdb开发Python项目。作为其中的一部分,我正在将用户详细信息(包括盐渍密码)从一个生成它们的系统移动到一个只使用它们的新系统。

单引号,双引号或三引号可以描绘您的字符串开头和结尾。但是,单引号和双引号是我正在迁移的4.5k左右用户中几个哈希的一部分。两种代币都出现在约450种盐中。

该代码的编辑版本如下

Django.execute ('INSERT INTO auth_user (password) VALUES ("' + user.password + '")')

我尝试在此数据库游标对象中使用的引用类型之间进行交换,当检测到引用类型或其他引用类型时,但是这仍然包含大约包含两者的150左右。

我可以使用哪些方法来解决这个问题?

我尝试过三重引号,但它们会在游标对象上抛出编程错误。

提前致谢

1 个答案:

答案 0 :(得分:2)

查询参数应提供所有正确的转义,例如:

cursor.execute('INSERT INTO auth_user (password) VALUES (%s)', [password])

来自Django文档:http://docs.djangoproject.com/en/dev/topics/db/sql/

  

如果你不熟悉   Python DB-API,请注意SQL   cursor.execute()中的语句使用   占位符,“%s”,而不是添加   直接在SQL中的参数。如果   你使用这种技术,潜在的   数据库库会自动生成   添加引号并转义到您的   参数必要时。 (另请注意   Django期待“%s”   占位符,而不是“?”占位符,   这是SQLite Python使用的   绑定。这是为了   一致性和理智。)