1064, “You have an error in your SQL syntax;....the right syntax to use near ‘s

1064, “You have an error in your SQL syntax;....the right syntax to use near ‘s,第1张

项目场景: python将含有单引号或者双引号的字符串保存到mysql中 问题描述

给出一个含有单引号的字符串,将其保存到Mysql中会发现错误。

import pymysql

coon = pymysql.connect(
    host='localhost',
    user='root',
    password='*****',
    database='testpython',
)

# 使用cursor()方法获取 *** 作游标
cursor = coon.cursor()
s = "Smith's friend"
cursor.execute("insert into demo1 values('%s') " % (s))
coon.commit()
coon.close()
print('保存完成')

出现如下错误:


原因分析:

无法保存,是因为单引号’ 无法保存?想想也不可能。去验证:


可以看到是可以保存单引号的,也能保存双引号。是什么原因导致的呢?
是因为字符串中添加了单引号或者双引号,python在读取过程中会将其进行字符串分割,例如:“Smith’s Friend” 读取到单引号后就会以为是 Smith s Friend两个字符串,从而与你sql语句不相符,出现错误


解决方案:

将含有单引号或者双引号的字符串不进行转义,这样就能将其正常保存到数据中了。

from pymysql.converters import escape_string

s = "Smith's friend"
s = escape_string(s)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/915967.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存