美文网首页
异常:存储MYSQL转义数据保证数据存储的准确性...

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

作者: Python集中营 | 来源:发表于2022-01-11 23:02 被阅读0次
file

【阅读全文】

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

相关文章

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

    【阅读全文】[https://mp.weixin.qq.com/s?__biz=MzA3ODk1Mzg0Mg==&...

  • tushare连接mysql问题

    tushare数据存储到mysql官方示例: 在把数据存储到mysql中,碰到python连接mysql问题: 解...

  • MySql总结

    MySQL MySQL基础篇 数据库相关概念 数据库:存储数据的仓库,数据是有组织的进行存储,简称(DataBas...

  • MYSQL记录存储过程SQL异常错误信息

    最近接触到mysql的存储过程,主要用于统计数据。 此外需要记录存储过程的执行状态,异常日志。MYSQL手册描述(...

  • 对象存储OSS之阿里云OSS介绍及开通

    数据、文件存储方式 一般,数据、文件的存储主要有以下几种方式: MySQL 数据(MySQL)+文件(本地IO流)...

  • MySQL存储引擎

    1、存储引擎简介 明确:MySQL数据存在磁盘文件中存储引擎:名词,主要用于声明MySQL表中数据的存储方式;不管...

  • 智齿科技

    Kafka能不能保证数据不丢失?怎么保证数据不丢失的? MySQL的存储引擎? innodb建表的时候如果不指定主...

  • MySQL处理Json数据

    备注: 版本: MySQL 8.0 一. Json数据存储 MySQL 8.0提供了json数据类型来存储json...

  • MySQL性能优化(一)-- 存储引擎和三范式

    一、MySQL存储引擎 存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方...

  • mysql学习大纲

    一、基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 MySQL存储引擎类型 In...

网友评论

      本文标题:异常:存储MYSQL转义数据保证数据存储的准确性...

      本文链接:https://www.haomeiwen.com/subject/upgicrtx.html