当前位置: 首页 > 后端技术 > Python

异常:存储MYSQL转义数据,保证数据存储的准确性...

时间:2023-03-25 20:38:00 Python

【阅读全文】**1.为什么要使用转义?**因为使用MYSQL数据库进行数据存储时,如果有特殊字符,会导致保存的数据丢失。例如:当一个文件路径需要以字符串形式插入数据库时??,如果字符串中包含“/”等特殊字符,则保存的字符串将不完整。需要保存的原始数据串应该是这样的。image_path='/usr/load/images/python.jpg'当直接将结果存入数据库时??,真实数据可能如下。image_path='usrloadimagespython.jpg'所以,特地记录下这种异常情况的发生以及如何解决这个问题。**2。如何使用转义来解决这个问题?**pymysql模块中专门提供了一个函数来解决这个问题,就是escape_string()函数。使用时直接使用escape_string()函数将需要转义的字符串作为参数传入,返回的结果就是我们需要的正确字符串。下面的函数是利用pymsql模块做一个数据插入功能,先导入需要的模块或函数对象。importpymysql#MYSQL数据库操作库importlogging#日志处理库logger=logging.getLogger("databaselog")#设置日志名称logger.setLevel(logging.DEBUG)#设置日志级别defget_conn():'''连接数据库函数:return:'''logger.info("Startdatabaseconnection")coon=pymysql.connect(host='127.0.0.1',user='root',password='root',database='data')logger.info("Completedatabaseconnection")returncoon写一个函数保存数据,用于数据列表中新功能的实现。definsert_data():'''数据库插入记录函数:return:'''logger.info("开始保存数据")id=input('数据序列号')id=int(id)boc_image_path=str(input('图片地址'))logger.debug("获取数据库连接...")connection=get_conn()logger.debug("已经获取数据库连接")cursor=connection.cursor()frompymysql.convertersimportescape_stringlogger.debug("保存数据时对包含特殊字符的字符串进行转义")sql="insertintoboc(id_,boc_image_path)values('%d','%s')"%(id,escape_string(boc_image_path))#这里,当数据插入图片地址boc_image_path字符串时,使用boc_image_path()函数进行转义try:cursor.execute(sql)connection.commit()logger.info("数据保存完成")error("数据保存异常,执行回滚操作")connection.rollback()connection.close()**3.使用escape_string()函数转义有什么问题?**高版本和低版本是有区别的,并且由于版本不同,escape_string()函数存在的位置也有区别。当pymsql版本低于0.10.1时使用如下方法导入。frompymysqlimportescape_string在pymysql版本高于0.10.1时使用pymysql.converters模块下的escape_string,我是用0.16版本操作的。frompymysql.convertersimportescape_string【以往优秀】做一个小闹钟,按计划做事...利用pyqt5的日期控件做一个小日历方便查看...结合上万张图片拼成一张图片,制作出超级棒的马赛克人物!小工具批量将mp3音频格式转为wav格式,无需使用H5,直接使用pywebio模块实现网页