SQLite Date类型仅接受Python日期对象作为输入

时间:2017-06-17 17:07:55

标签: python date datetime flask flask-sqlalchemy

我遇到了SQLAlchemy的问题

  

SQLite日期类型只接受Python日期对象作为输入。[SQL:'UPDATE记录SET时间戳=?] [参数:[{'timestamp':( datetime.date(2017,6,15),)}]]

这是我的Forms.py

class DataForm(FlaskForm):        
    timestamp = DateField("date", validators=[Required()])

class ModifyDataForm(FlaskForm):
    timestamp = DateField("date", validators=[Required()])

这是我的Models.py

class Record(db.Model):
    timestamp = db.Column(db.Date, default=date.today, index=True)

Views.py

def create():
    form = DataForm()
    if form.validate_on_submit():
        record = Record(timestamp=form.timestamp.data,)

def modify(id):
    record = Record.query.get_or_404(id)
    form = ModifyDataForm(record)
    if form.validate_on_submit():
        record.timestamp = form.timestamp.data,
    form.timestamp.data = record.timestamp

模板我使用bootstrap的wtf.html

当我创建数据时,输入'2017-06-18',没关系。
但是当我更新数据时,sqlalchemy加注:
>>> SQLite日期类型只接受Python日期对象作为输入。[SQL:'UPDATE记录SET时间戳=?] [参数:[{'timestamp':( datetime.date(2017,6,15),)}]]

我哪里错了? datetime.date不是Python日期对象吗?为什么第一次有效?我该如何解决呢。

我的英语很差,如果有任何疑惑,请再次问我。

谢谢!

1 个答案:

答案 0 :(得分:1)

我太蠢了。
在我的views.py中 功能修改。
我只是从create复制代码。然后,它有一个逗号结束行。当我删除这个逗号时,一切正常! 因此,如果您遇到同样的问题,请检查您的代码!