python 插入mysql数据库 字符串中含有单、双引号解决方法

在使用爬虫爬取网页时,爬取的内容里如果存在单引号(“)或者双引号(”“),直接保存数据到数据库就会报错:
pymysql.err.ProgrammingError: (1064, 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '专精特新"中小企业贷款风险补偿实施细则〉的通知》的通知”’ at line 1’)
在这里插入图片描述
可以使用pymysql中专门的转义方法转义后再进行保存,导入语法如下:

# v1.0.0及以上
from pymysql.converters import escape_string
# v0.10.1及以下
from pymysql import escape_string

转义代码示例如下:

#data为含有单引号或者双引号的字符串
string = escape_string(string)

以下为我解决问题后的部分代码

cur_obj.execute(
   'insert into tongzhigonggao(created_at,title,content) values (("%s"),("%s"),("%s"))' % (
   (datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d %H:%M:%S')),escape_string(title_),content_.text))
# 提交操作
mysql_obj.commit()

title_和content_为自定义的变量,title_的值为re正则解析,content_的值为bs4解析,所以content_的值存到数据库中是content_.text。
使用escape_string(title_)转义title_后,带有’'或者""的标题就可以正常保存到数据库中了。

END(后为无意义内容)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值