【Python小技巧】sqlalchemy操作sqlite日期类型的处理

说明

做数据挖掘离不开python,存储数据离不开sqlite,操作sqlite离不开sqlalchemy。但sqlite不直接支持日期类型。于是会遇到形形色色的问题。

表定义

日期直接用TEXT类型

create table follows
(
    row_id      INTEGER not null
        primary key autoincrement,
    user_id     VARCHAR,
    follow_id   VARCHAR,
    follow_me   VARCHAR,
    status      varchar(16),
    update_date TEXT,
    create_date TEXT
);


实体定义

import datetime
from sqlalchemy import (
    create_engine,
    Column,
    Integer,
    String, DateTime)
    
class Follows(Base):
    __tablename__ = 'follows'
    __table_args__ = {'sqlite_autoincrement': True}

    row_id = Column(Integer, primary_key=True)
    user_id = Column(String)
    follow_id = Column(String)
    follow_me = Column(String)
    status = Column(String)
    update_date = Column(DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now)
    create_date = Column(DateTime, default=datetime.datetime.now)

插入数据

如果直接follow.create_date = ‘2022-12-10’,则报错:

Error - "SQLite DateTime type only accepts Python datetime and date objects as input."

需要:

follow.create_date = datetime(2022, 12, 8, 10, 10, 10)
此外, 日期的常见操作(如diff)
    expiration_year  = int(form.expiration_date.data[:4])
    expiration_month =  int(form.expiration_date.data[5:7])
    expiration_date = int(form.expiration_date.data[8:10])
    expiration_date =datetime(expiration_year,expiration_month,expiration_date)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北极象

如果觉得对您有帮助,鼓励一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值