django DateTimeField 到 mysql DATETIME 长度问题,默认是6位

探讨了Django在处理DateTimeField类型时自动添加6位精度的问题,这可能导致其他框架无法正确读取字段值。文章提供了两种解决方案:一是通过修改Django源代码中的datetime(6)为datetime;二是直接在数据库中修改字段长度。

django migrate生成表结构时,对于DateTimeField类型的处理是加了6位精度的,只用django处理是没有任何问题的,但是别的框架来读取这种字段会读取不到该字段值。

在文件: django/db/backends/mysql/base.py line:184

data_types 方法有如下代码:

@cached_property 
def data_types(self): 
    if self.features.supports_microsecond_precision: 
        return dict(self._data_types, DateTimeField='datetime(6)', TimeField='time(6)') 
    else: 
        return self._data_types

知道了这些后,我们只需要将 datetime(6) 修改为 datetime 就能在数据库表创建时不指定DATETIME的精度了

或者直接在数据库中修改字段长度:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值