解决在使用sqlalchemy映射更新mysql时出现的datetime设置的问题

在使用sqlalchemy ORM操作MySQL时遇到datetime.now()错误,原因是datetime.now不在datetime模块中。文章指出应将数据库字段设为timestamp,并使用'dEFAULT CURRENT_TIMESTAMP'作为默认值。还介绍了Python datetime模块的5个类:date、datetime、time、timedelta和tzinfo。
摘要由CSDN通过智能技术生成

db.Column(db.DateTime,default=datetime.now()) 在migrate时总是报类似的错误

AttributeError: module 'datetime' has no attribute 'now';

百度说是mysql版本升级了,在5.6以上均存在datetime的问题,应该设置为timestamp,试了几次也是错误。

经多次尝试得知真相:

其中db.DateTime为sqlalchemy模块设置的mysql数据库的字段格式,对应于数据库中的datetime、time、timestamp。

那后面为何要有两个datetime呢?

原来,第二个datetime为python系统的datetime,而非sqlalchemy或flask或mysql数据库。

python中datetime模块定义了5个类,分别是

1.datetime.date:表示日期的类

2.datetime.datetime:表示日期时间的类

3.datetime.time:表示时间的类

4.datetime.timedelta:表示时间间隔,即两个时间点的间隔

5.datetime.tzinfo:时区的相关信息

此处用的就是datetime类,详细的datetime适用方法见datetime模块详解

Python的datetime模块分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值