pymysql 1064 (Python字符串转义问题)
今天在处理前些天爬取的失败数据记录重新入库的时候发现在存入mysql的时候一直给我报1064错误,
这个错误是mysql直接报的,百度一下说是语法问题,语法确实没毛病呀,最后仔细找了找
发现有个关键点,是说引号的问题,然后我就试了试,pymysql.escape_string(),还真是,加上了之后失败的数据重新入库了,
没毛病。
错误信息
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 \'fas好",\'wozhidaole知道了\'" where title = "好"\' at line 1')
解决办法:操作之前多加一步转化 [evp_embed_video url=”http://example.com/wp-content/uploads/videos/myvid.mp4″ autoplay=”true”]
pymysql.escape_string(str)
def save(x1): set=pymysql.escape_string(x1) # 入库之前进行一次转义即可解决1064问题,并非是你的语法问题。 ss=usr.cursor() ss.execute(f"""insert into ysm values(null,"{set}",now())""")
sql = """INSERT INTO video_info(video_id, title) VALUES("%s","%s")""" % (video_info["id"],video_info["title"])
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 \’Recipe” of Machine Learning”,”https://i.ytimg.com/vi/DkgJ_VkU5jM/hqdefault.jpg”,\’ at line 4′)
当video_info[“title”]里面含有引号时,可能会发生如上错误。
使用pymysql.escape_string()方法
如下:
sql = """INSERT INTO video_info(video_id, title) VALUES("%s","%s")""" % (video_info["id"],pymysql.escape_string(video_info["title"]))