类型错误插入数据到sqlite中烧瓶
问题描述:
我想从表单和表中插入数据到表中,但我得到这个错误。类型错误插入数据到sqlite中烧瓶
TypeError: function takes at most 2 arguments (3 given)
db.execute("INSERT INTO chapters (chapter, book_id) VALUES (?, ?)", [request.form['chapter']], book_id)
@app.route('/newbook')
def new_book():
return render_template('newbook.html')
@app.route('/addbook', methods=['GET', 'POST'])
def addbook():
db = get_db()
db.execute("INSERT INTO books (title) VALUES (?)",
[request.form['title']])
db.commit()
return redirect(url_for('new_chapter'))
@app.route('/newchapter')
def new_chapter():
return render_template('newchapter.html')
@app.route('/addchapter', methods=['GET', 'POST'])
def addchapter():
db = get_db()
cur = db.execute("SELECT last_insert_rowid()")
book_id = cur.fetchone()
db.execute("INSERT INTO chapters (chapter, book_id) VALUES (?, ?)", [request.form['chapter']], book_id)
db.commit()
return redirect(url_for('new_concepts'))
答
错误是告诉你什么是错的,你给下面的行3个参数时,它只能接受2
db.execute("INSERT INTO chapters (chapter, book_id) VALUES (?, ?)", [request.form['chapter']], book_id)
的第一个参数应该是SQL查询,而第二个参数应该是一个将取代?
占位符的值列表。但是,您不小心将book_id
置于列表的外部,导致它作为第三个参数传递。它应该在列表中,如下所示:
db.execute("INSERT INTO chapters (chapter, book_id) VALUES (?, ?)", [request.form['chapter'], book_id])
哪一行是给你的错误,你能否用一个完整的堆栈跟踪来更新你的问题? – Soviut