博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flask_sqlalchemy-------AttributeError: ‘str‘ object has no attribute ‘microseconds‘
阅读量:2393 次
发布时间:2019-05-10

本文共 1496 字,大约阅读时间需要 4 分钟。

文章目录

1.报错现象

AttributeError: ‘str’ object has no attribute ‘microseconds’

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

报错过程:

  • 执行了一个flask_sqlalchemy的查询语句,然后就报如上这个错误
  • 执行的语句为:result_object_list = TaskReport.query.filter(TaskReport.task_id == “1000000046”).all()
  • 在其他相似表格也做过类似的查询,也完美执行了,没报任何错误!
  • 对比了一下,其他表格保存的数据也和这张表格一样,数据没问题的!

核心报错的代码也贴出来:

def result_processor(self, dialect, coltype):        time = datetime.time        def process(value):                    # convert from a timedelta value            if value is not None:                microseconds = 0                microseconds = value.microseconds			# 这一行是核心报错的代码                seconds = value.seconds                minutes = seconds // 60                return time(                    minutes // 60,                    minutes % 60,                    seconds - minutes * 60,                    microsecond=microseconds,                )            else:                return None        return process

2.解决方案一:

  • 经过排查,发现我保存的数据是字符串,但系统代码执行到报错的地方的时候,直接执行value.microseconds报错了,因为获取到的value是字符串类型,字符串当然无法获取到对应的微妙数据
  • 后来,把数据库对应的start_time数据类型都改为time类型(长度为0,意思是毫秒不显示)
  • 再后来,再执行如上代码,发现一切正常了!

最初把时间格式都设置为varchar类型,就是为了避免各种时间的转换,省点事情的,现在又改回为time类型,感觉不是很爽,再找找原因!

3.解决方案二:

经过排查,发现出问题的表格对应的模型类如下所示:

在这里插入图片描述

  • 虽然我在表格中,把start_time写为字符串varchar类型,
  • 但是, 实际的数据表格模型类中, 我把start_time的数据类型写为time类型
  • 当使用TaskReport这个模型类去搜索的时候,它会根据这个模型类的数据类型去搜索内容,而不是根据你表格的实际数据类型去搜索
  • 如果是time类型的数据,在报错的代码部分,是可以通过value.microseconds获取毫秒数据的。但因为模型类是time类型,而实际是字符串类型,在按照time类型处理数据的时候,就报错了!

4.总结:

数据库表格对应的字段类型, 一定要与表格模型类的字段类型一直,实时保持同步,这样即使出现其他问题也很容易排查了!

转载地址:http://mteab.baihongyu.com/

你可能感兴趣的文章
Mysql Fabric实现学习笔记
查看>>
Spring JTA multiple resource transactions in Tomcat with Atomikos example
查看>>
How to setup multiple data sources with Spring and JPA
查看>>
MySQL 5.7 Fabric: any good?
查看>>
Accessing Fabric HA Groups from Java
查看>>
Q&A: Putting MySQL Fabric to use
查看>>
Fabric FAQ
查看>>
boost 1.39编译安装手记
查看>>
树莓派安装中文输入法
查看>>
树莓派(raspberry pi)播发flash 远程登录 视频播放
查看>>
Linux 安装与配置服务器版jre7
查看>>
Perform Two Phase Commits in MongoDB
查看>>
java.rmi.ConnectException: Connection refused to host: 127.0.0.1
查看>>
数据库服务器 Cloudscape
查看>>
JAVA中使用Schema校验XML
查看>>
使用BlazeDS实现Java和Flex通信
查看>>
使用 Apache MINA 开发高性能网络应用程序
查看>>
五分钟学会使用spring-data-cassandra快速实现数据的访问
查看>>
Build self-healing distributed systems with Spring Cloud
查看>>
如何利用Spring Cloud构建起自我修复型分布式系统
查看>>