一个有关python时间类的问题

我想在SQLite插入一条数据,里面包含一个datetime类型的数据。
table类如下:

class Task(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    finish_time = db.Column(db.Datetime, nullable=True)
    task_name = db.Column(db.String(20), nullable=False)
    remarks = db.Column(db.String(30), nullable=True)
    task_status = db.Column(db.Boolean, default=False)

插入字段前,想先处理下时间,用的是datetime模块下的time类

from datetime import time

def time_ex(hh, mm, ss):
    time_task = time(hour=hh, minute=mm, second=ss, microsecond=123456).isoformat(timespec='minutes')
    return time_task

插入数据时候:

    tasks = [
        {'finish_time': time_ex(int('08'), int('00'), int('00')), 'task_name': 'task a', 'remarks': 'Dr.See',
         'task_status': 'False'},
        {'finish_time': time_ex(int('09'), int('00'), int('00')), 'task_name': 'task b', 'remarks': 'Dr.See',
         'task_status': 'False'},
    ]
    for t in tasks:
        task = Task(finish_time=t['finish_time'], task_name=t['task_name'], remarks=t['remarks'],
                    task_status=t['task_status'])
        db.session.add(task)
        db.session.commit()

然后就开始报错了:

sqlalchemy.exc.StatementError: (builtins.TypeError) SQLite DateTime type only accepts Python datetime and date objects as input.

我试过将数据库中db.datetime改成db.time:

sqlalchemy.exc.StatementError: (builtins.TypeError) SQLite Time type only accepts Python time objects as input.

请问是哪里出了问题。。我对时间模块真的有点一筹莫展。。


我发现isoformat输出的是str类型,于是我去掉了,现在还是报错,我发现插入值变成了这个:

'finish_time': datetime.time(8, 0), 

大佬们帮帮忙。。新手在这里谢过。。

回复
阅读 1.9k
1 个回答

需要传入一个datetime或者date的地方,你传入一个time

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏