Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查询数据库中的网站时发生SQLite日期类型错误_Python_Sqlite_Date_Datetime - Fatal编程技术网

Python 查询数据库中的网站时发生SQLite日期类型错误

Python 查询数据库中的网站时发生SQLite日期类型错误,python,sqlite,date,datetime,Python,Sqlite,Date,Datetime,我已经被这个错误困扰了很长时间了,它变得非常烦人。我已经检查了无数次我的代码,就像我说的,我对为什么会出现这个SQLAlchemy错误感到恼火 我在做什么:我试图通过使用用户输入,以日期时间的格式(即“MM/DD/YYYY”)向数据库发送数据。在我要求将日期“保存”到数据库之前,代码在实现时似乎工作正常 class Task(db.Model): __tablename__ = "tasks" task_id = db.Column(db.Integer, primary_key=T

我已经被这个错误困扰了很长时间了,它变得非常烦人。我已经检查了无数次我的代码,就像我说的,我对为什么会出现这个SQLAlchemy错误感到恼火

我在做什么:我试图通过使用用户输入,以日期时间的格式(即“MM/DD/YYYY”)向数据库发送数据。在我要求将日期“保存”到数据库之前,代码在实现时似乎工作正常

class Task(db.Model):

__tablename__ = "tasks"

    task_id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, nullable=False)
    due_date = db.Column(db.Date, nullable=False)
    priority = db.Column(db.Integer, nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    posted_date = db.Column(db.Date, default=datetime.datetime.utcnow())
    status = db.Column(db.Integer)

def __init__(self, name, due_date, priority, status, user_id, posted_date):
    self.name = name
    self.due_date= due_date
    self.priority= priority
    self.status= status
    self.posted_date = posted_date  
    self.user_id = user_id

def __repr__(self):
    return '<name[0]>'.format(self.name)
上面的脚本删除我现有的数据库,并用上面的凭据重写它

    @app.route('/add/', methods=['GET', 'POST'])
    @login_required
    def new_task():
        form = AddTaskForm(request.form)
        if request.method == 'POST':
            if form.validate_on_submit():
                new_task = Task(
                    form.name.data,
                    form.due_date.data,
                    form.priority.data,
                    datetime.datetime.utcnow(),
                    '1',
                    session['user_id']
                )
                db.session.add(new_task)
                db.session.commit()
                flash('New entry was successfully posted. Thanks!')
                return redirect(url_for('tasks'))
            else: 
                flash("Please put all credentials Necessary")
                return redirect(url_for('tasks'))
        return render_template('tasks.html', form=form)
上面的脚本来自my views.py脚本,用作使用所需凭据保存任务的算法

    @app.route('/add/', methods=['GET', 'POST'])
    @login_required
    def new_task():
        form = AddTaskForm(request.form)
        if request.method == 'POST':
            if form.validate_on_submit():
                new_task = Task(
                    form.name.data,
                    form.due_date.data,
                    form.priority.data,
                    datetime.datetime.utcnow(),
                    '1',
                    session['user_id']
                )
                db.session.add(new_task)
                db.session.commit()
                flash('New entry was successfully posted. Thanks!')
                return redirect(url_for('tasks'))
            else: 
                flash("Please put all credentials Necessary")
                return redirect(url_for('tasks'))
        return render_template('tasks.html', form=form)
我收到的恼人的错误是:

sqlalchemy.exc.StatementError:(内置.TypeError)SQLite日期类型 仅接受Python日期对象作为输入。[SQL:'插入到任务中 (名称、截止日期、优先级、用户id、发布日期、状态)值(?, ?,?,?,?)'][参数:[{'status':datetime.datetime(2016,7,1, 5,24,4823300),“优先级”:6,“发布日期”:1,“截止日期”: datetime.date(2017年5月17日),'name':'lol','user_id':'1'}]]

我知道这方面有一些问题得到了回答,但这个问题比后者具体得多。如果你能帮忙,请回复!
谢谢

看起来您正在将表单中的
用户id
作为
任务
构造函数中的
发布日期
传递

从您的视图创建新任务

new_task = Task(
                form.name.data,
                form.due_date.data,
                form.priority.data,
                datetime.datetime.utcnow(), #this should probably be at the end
                '1',
                session['user_id'] #check this here
            )
任务构造函数

def __init__(self, name, due_date, priority, status, user_id, posted_date): #posted date is the last param
    self.name = name
    self.due_date= due_date
    self.priority= priority
    self.status= status
    self.posted_date = posted_date  
    self.user_id = user_id

谢谢!我没有看到我传递了错误的参数!难怪!参数“user_id”不是可输入的数据!非常感谢:)很高兴我能帮忙:)