网站个人备案需要什么,十堰公司做网站,pc网站案例,推客平台概述MySQL中常用的数据格式有tinyint()、int()、float()、double()、decimal() 、varchar、enum()、datetime;小数格式中decimal比较常用#xff0c;因为更加精确#xff0c;这里就以decimal为例。从MySQL中读取了一行数据#xff0c;内容为#xff1a;(17479, datetime.da…概述MySQL中常用的数据格式有tinyint()、int()、float()、double()、decimal() 、varchar、enum()、datetime;小数格式中decimal比较常用因为更加精确这里就以decimal为例。从MySQL中读取了一行数据内容为(17479, datetime.datetime(2020, 4, 1, 0, 0), Decimal(23646.00), Decimal(23646.00), Decimal(23622.00)因为需要通过TCP传递给用户所以把数据转换为字符串,用户端接收到数据后需要再把字符串还原还原字符串常用模块ast例如ast.literal_evel(),这里就遇到坑了直接使用ast.literal_evel()会报错报错的原因呢就是Decimal(‘23646.00’)这种格式ast模块不认识。解决方案首先Decimal 是decimal模块的一个类那么先导入。与ast.literal_evel()类似的功能还有一个evel()直接使用evel()还原数据就不会出问题这是为什么呢evel()与ast.literal_evel()的区别eval()在做数据转换前并不知道需要转化的数据是否合法的python数据类型。只是在调用函数的时候去计算。如果被计算的内容不是合法的python类型就会抛出异常。而ast.literal_evel()会先判断需要转换的内容是不是合法的python数据类型如果是则进行转换否则就不进行转换。因此平时还是推荐使用ast.literal_eval()但是遇到了Decimal(‘23646.00’)事件为省事期间还是直接使用eval()吧。简单的示例from decimal import *import pandasabc ((17479, datetime.datetime(2020, 4, 1, 0, 0), Decimal(23646.00), Decimal(23646.00), Decimal(23622.00), Decimal(23624.00), 74, 100, 0),(30029, datetime.datetime(2020, 4, 25, 0, 58), Decimal(23926.00), Decimal(23948.00), Decimal(23926.00), Decimal(23946.00), 38, 20, 0))abc repr(abc)abc eval(abc)print(abc)ast模块的注意事项ast官方文档ast模块的比较常用的两个方法parse和literal_evel从官方文档可以看到这两个方法都有一处警告足够复杂或是巨大的字符串可能导致Python解释器的崩溃因为Python的AST编译器是有栈深限制的。