【浏览全文】
**1、为什么要应用本义?
**
因为在应用MYSQL数据库进行数据存储时,如果呈现特殊字符时保留的数据就会产生缺失问题。比方:须要将一个文件门路作为字符串的模式插入到数据库中时,这个字符串中蕴含特殊字符"/"等字符时保留的字符串就会不残缺。
本来须要保留的数据字符串应该是这样的。
image_path = '/usr/load/images/python.jpg'
后果在间接保留到数据库中时实在的数据可能就是上面这样的。
image_path = 'usrloadimagespython.jpg'
因而,专门记录一下这种异常情况的产生,以及如何解决这个问题的产生。
**2、如何应用本义的形式解决这个问题?
**
在pymysql的模块中专门提供一个函数来解决这个问题,那就是escape_string()函数。
应用时间接应用escape_string()函数将须要本义的字符串作为参数传递,返回后果就是咱们须要的正确的字符串。
上面这个性能就是应用pymsql的模块做了一个数据的插入性能,先导入须要的模块或函数对象。
import pymysql # MYSQL数据库操作库import logging # 日志解决库logger = logging.getLogger("数据库日志") # 设置日志名称logger.setLevel(logging.DEBUG) # 设置日志级别def get_conn(): ''' 连贯数据库函数 :return: ''' logger.info("开始数据库连贯") coon = pymysql.connect(host='127.0.0.1', user='root', password='root', database='data') logger.info("实现数据库连贯") return coon
编写保留数据的函数用于数据列表新增性能实现。
def insert_data(): ''' 数据库插入记录函数 :return: ''' logger.info("开始数据保留") id = input('数据序号') id = int(id) boc_image_path = str(input('图片地址')) logger.debug("获取数据库连贯...") connection = get_conn() logger.debug("曾经失去数据库连贯") cursor = connection.cursor() from pymysql.converters import escape_string logger.debug("保留数据时对蕴含特殊字符的字符串进行本义解决操作") sql = "insert into boc(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("实现数据保留") except: logger.error("数据保留产生异样,执行回滚操作") connection.rollback() connection.close()
**3、应用escape_string()函数本义时会有什么问题?
**
这里有一个高版本和低版本的区别,因为版本的不同escape_string()函数存在的中央也有差异。
在pymsql的版本低于0.10.1版本时应用上面这种形式进行导入。
from pymysql import escape_string
在pymysql的版本高于0.10.1版本应用pymysql.converters模块下escape_string,我当初应用的就是0.16的版本进行操作的。
from pymysql.converters import escape_string
【往期精彩】
做一个小闹钟,按布局做事...
应用pyqt5的日期控件做一个小日历不便查看...
将几万张图片合成一张图片,制作一个超赞的马赛克图!
小工具批量将mp3音频格式转换为wav格局
不必H5,间接应用pywebio模块实现网页