• 解决python查询数据库字段为decimal类型的数据结果为科学计数法的问题


    解决python查询数据库字段为decimal类型的数据结果为科学计数法的问题

    select CAST(u.amount  AS CHAR) from user u
    

    CAST(u.amount AS CHAR) ;u.amount: Decimal类型的字段

    这样查询出来的数据就不会是科学计数法了,但是查出来的数据类型就转成了字符串类型了

    验证

    准备数据库数据

    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for amount
    -- ----------------------------
    DROP TABLE IF EXISTS `amount`;
    CREATE TABLE `amount`  (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
      `amount` decimal(65, 15) NOT NULL,
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of amount
    -- ----------------------------
    INSERT INTO `amount` VALUES (1, 'desire', 14.025415550000000);
    INSERT INTO `amount` VALUES (2, 'ronin', 0.253698741550000);
    INSERT INTO `amount` VALUES (3, 'tom', 0.000000000000005);
    INSERT INTO `amount` VALUES (4, 'aaa', 0.000000000000785);
    
    SET FOREIGN_KEY_CHECKS = 1;
    

    Python查询

    1、连接数据库,创建连接

    import pymysql
    
    con = pymysql.connect(host='localhost',
                          user="root",
                          password="123456",
                          port=3306,
                          charset='utf8')
    cur = con.cursor()
    

    2、使用 * 查询所有的数据

    sql = "SELECT * FROM desire.amount a"
    cur.execute(sql)
    users = cur.fetchall()
    print(users)
    

    2.1、打印结果

    ((1, 'desire', Decimal('14.025415550000000')), (2, 'ronin', Decimal('0.253698741550000')), (3, 'tom', Decimal('5E-15')), (4, 'aaa', Decimal('7.85E-13')))
    

    2.2 分析结果:从上面的打印结果可以看到,如果小数位过长,打印出来的数据就会变成科学计数法的形式打印,这样的数据看起来不是很清晰。

    3、使用CAST() SQL函数,把Decimal类型的字段转成字符串显示

    sql = "SELECT a.id,a.name,CAST(a.amount  AS CHAR) FROM desire.amount a"
    cur.execute(sql)
    users = cur.fetchall()
    print(users)
    

    3.1 打印结果

    ((1, 'desire', '14.025415550000000'), (2, 'ronin', '0.253698741550000'), (3, 'tom', '0.000000000000005'), (4, 'aaa', '0.000000000000785'))
    

    3.2 分析结果:这样打印出来的数据,就跟数据库存放的一致了,数据比对起来也是正确的,很清晰

    4、经过这样处理,比对数据就显得稍微清晰一点,不会混杂着科学计数法的数据了。

  • 相关阅读:
    41 快速的复制一张表
    4 cdh 5.12 centos 6.10三节点安装
    40 insert语句的锁
    oracle 11g 数据库恢复技术 ---02 控制文件
    05 使用bbed跳过归档恢复数据文件
    Springboot 配置文件与对象之间进行映射之@ConfigurationProperties
    @ConditionalOnProperty来控制Configuration是否生效
    Oracle 服务名/实例名,Service_name 和Sid的区别
    @Value中冒号的作用
    springboot读取配置不存在报错
  • 原文地址:https://www.cnblogs.com/desireyang/p/13194648.html
Copyright © 2020-2023  润新知