关于python:异常存储MYSQL转义数据保证数据存储的准确性

44次阅读

共计 1739 个字符,预计需要花费 5 分钟才能阅读完成。

【浏览全文】

**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 模块实现网页

正文完
 0