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

当尝试将包含单引号或双引号的字符串插入MySQL时,可能会遇到错误。问题在于Python在处理字符串时,单引号和双引号可能导致SQL语句解析错误。解决方法是使用`pymysql.converters.escape_string`来转义字符串,确保它们能正确保存到数据库中。

项目场景:

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)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值