このエラーが最も長く続き、非常に迷惑になりました。私は何度も自分のコードをチェックしましたが、このSQLAlchemyエラーがなぜ起こっているのか迷っています。SQLite Date typeデータベースにWebサイトを照会する際にエラーが発生しました
私は何をしていますか?ユーザー入力を使用して、データをDate時間、つまり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)
スクリプトの上記部分は、上記のスクリプトは、私は既存のデータベースを削除し、上記の資格情報を使用してそれを書き換えるタスク
from views import db
from config import DATABASE_PATH
import sqlite3
from datetime import datetime
with sqlite3.connect(DATABASE_PATH) as connection:
c = connection.cursor()
c.execute("""ALTER TABLE tasks RENAME TO old_tasks""")
db.create_all()
c.execute("""SELECT name, due_date, priority,
status FROM old_tasks ORDER BY task_id ASC""")
data = [(row[0], row[1], row[2], row[3],
datetime.now(), 1) for row in c.fetchall()]
c.executemany("""INSERT INTO tasks (name, due_date, priority, status,
posted_date, user_id) VALUES (?, ?, ?, ?, ?, ?)""", data)
c.execute("DROP TABLE old_tasks")
のモデルです。
@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)
上記のスクリプトは、私のviews.pyスクリプトから来ており、必要な資格情報を使ってタスクを保存するアルゴリズムの役割を果たします。
私が受けてる迷惑なエラーは、このことを起こる:
sqlalchemy.exc.StatementError: (builtins.TypeError) SQLite Date type only accepts Python date objects as input. [SQL: 'INSERT INTO tasks (name, due_date, priority, user_id, posted_date, status) VALUES (?, ?, ?, ?, ?, ?)'] [parameters: [{'status': datetime.datetime(2016, 7, 1, 5, 24, 48, 23300), 'priority': '6', 'posted_date': 1, 'due_date': datetime.date(2017, 5, 17), 'name': 'lol', 'user_id': '1'}]]
私が質問があることを知っている、このことについて答えたが、この質問は、はるかに具体的な後者よりもです。あなたが返信をお手伝いできる場合は! ありがとう!
ありがとう!私は間違ったパラメータを渡したとは思わなかった!不思議ではない!パラメータ 'user_id'は入力可能なデータではありません!ありがとうございます:) –
私は助けることができる嬉しい:) – nlloyd