【问题标题】:MySQLdb input where strings contain string delimitersMySQLdb 输入,其中字符串包含字符串分隔符
【发布时间】:2011-06-27 23:43:58
【问题描述】:

我正在使用 MySQLdb 进行 Python 项目。作为其中的一部分,我将用户详细信息(包括加盐密码)从一个生成它们的系统转移到一个简单地使用它们的新系统。

单引号、双引号或三引号可以描述字符串的开始和结束。但是,单引号和双引号是我要迁移的 4.5k 左右用户中的几个哈希的一部分。这两个标记都出现在其中大约 450 种盐中。

编辑后的代码如下

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

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

我可以使用哪些解决方法?

我尝试了三引号,但它们在光标对象上引发了编程错误。

提前致谢

【问题讨论】:

标签: python database migration passwords


【解决方案1】:

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

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 使用它 绑定。这是为了 一致性和理智。)

【讨论】:

    猜你喜欢
    • 2015-11-02
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多