Python SQL DB 字符串文字和转义

标签 python sql mysql string literals

有人知道 MySQLdb 是否会自动转义 SQL 语句的字符串文字吗?

例如,我正在尝试执行以下操作:

cursor.execute("""SELECT * FROM `accounts` WHERE `account_name` = 'Blah'""")

这会自动转义帐户名称吗?或者只有当我执行以下操作时它才会逃脱?:

x = 'Blah'
cursor.execute("""SELECT * FROM `accounts` WHERE `account_name` = %s""", (x))

或者它会对两者都起作用吗?谁能澄清一下,因为我找不到任何相关信息。

最佳答案

第一个示例中没有转义,它是一个原始 SQL 查询。它是有效的,它会起作用,但显然只有当你总是想搜索帐户 Blah 时它才有意义。

当您需要从变量中的名称获取帐户时,您将需要参数化版本。但是,您的示例可能无法按预期工作,因为 (x) 不是元组,它只是值 x。元组序列中的 x 将为 (x,)。为了避免混淆,您可能更喜欢使用列表[x]

关于Python SQL DB 字符串文字和转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4189808/

相关文章:

python - 如何仅运行一次具有多个值的 def 并将值使用到另一个 def 中?

python - 获取返回空字典的存储 blob 的属性

sql - 在 sql server 中测试标量函数与表值函数的性能

php - 当用户在 CKeditor 源代码中打开某些标签或引号时如何解决?

mysql - 根据while循环的变化改变表名

python - 构建 XPATH 表达式以获取并单击按钮元素

python - 我可以连接到另一台服务器上的mysql数据库吗?

Mysql 连接性能很慢

sql - 我该如何编写这个 Postgres 查询?

sql - 如果两个序列之间的差异大于30,则扣除更大的序列