python - python 上的 MySQL 查询中的转义引号

标签 python mysql python-3.x mysql-real-escape-string pymysql

我正在尝试解决 sql 查询中的引号问题。我知道 stackoverflow 上有很多问题。但没有人为我工作。可能是因为我使用其他框架(pyMySQL)进行sql连接。我尝试了参数化mysql查询:

    conn = pymysql.connect(host ='host', user='user', passwd='user', db='db', charset='utf8mb4')
    cur = conn.cursor()
    cur.execute("USE db")
    cur.execute("UPDATE table SET callback_data = %s, message = %s, photo = %s, location = %s, first_name_last_name = %s WHERE user_id=%s",
(callback_data, message, photo, location, first_name_last_name, user_id))
    cur.connection.commit()
    cur.close()
    conn.close()

但我总是收到 %s 错误(错误消息:预期,收到 %s)。我的python版本是3.6.1。如何在 sql 查询中转义引号?谢谢。

最佳答案

首先,正如 Ilja 所说,你必须对 mysql 保留字使用反引号。

然后对于 text/varchar 字段,您可以使用 json 转储:

import json

[...]

cur.execute("UPDATE `table` SET callback_data = %s, message = %s, photo = %s, location = %s, first_name_last_name = %s WHERE user_id=%s", % (
  json.dumps(callback_data),
  json.dumps(message),
  json.dumps(photo),
  json.dumps(location),
  json.dumps(first_name_last_name),
  json.dumps(user_id)
  )

关于python - python 上的 MySQL 查询中的转义引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44892853/

相关文章:

mysql - 我们可以为一个外键引用两个不同的表吗?

php - Mysql内连接where值在另一个表中

Python - 如何从给定的字符串调用实例?

python - 在 Python 中设置 celery 任务后端的麻烦

python - 在 Python 中使用 Selenium 不要等待页面加载

php - 在 mysql、php 中搜索年龄范围

python - heapq 推送 TypeError : '<' not supported between instances

python - 生成范围内两个随机整数范围内的结果

python类属性更新问题

python - 如何为我的网球比赛创建记分牌?