from flask import Flask, jsonify, request, url_for, redirect, session, render_template, g import sqlite3 app = Flask(__name__) app.config['DATABASE'] = './data.db' def connect_db(): path = r"C:\Users\Arjun\Documents\flask_app\data.db" sql = sqlite3.connect(path) sql.row_factory = sqlite3.Row return sql def get_db(): if not hasattr(g, 'sqlite3'): g.sqlite_db = connect_db() return g.sqlite_db @app.teardown_appcontext def close_db(error): if hasattr(g, 'sqlite_db'): g.sqlite_db.close() @app.route('/home', defaults={'name':'Default'}) @app.route('/home/<name>') def home(name): session['name'] = name return render_template('home.html', name=name, display = False, mylist = [1,2,3,4] @app.route('/theform5', methods=['GET', 'POST']) def theform5(): if request.method == 'GET': return render_template('form.html') else: name = request.form['name'] location = request.form['location'] db = get_db() db.execute("insert into users (name, location) values (?, ?)", [name, location]) db.commit() return redirect(url_for('home', name=name, location=location)) @app.route('/viewresults') def viewresults(): db = get_db() cur = db.execute('select id, name, location from users') results = cur.fetchall() return 'The ID is {}. Name is {}. The location is {}. '.format(results[1]['id'], results[1] ['name'], results[1]['location']) Error in: return "The ID is {}. Name is {}. The location is {}".format(results[1]['id'],results[1]['name'],results[1]['location']) IndexError: list index out of rangeThough the table can be edited directly through the terminal, it can't be edited when the flask web app is run. Browser: Chrome SQLite: v3.30.1 Python: v3.8.1 Flask: v1.1.1
3 Réponses :
Vous avez une erreur de syntaxe dans votre relevé de retour dans votre fonction d'accueil. manquant ')' à la fin. P>
Pour exécuter db.execute, vous devrez d'abord configurer le curseur: P>
dB = get_db () p>
curseur = db.cursor () p>
curseur.execute ("Insert dans les utilisateurs (nom, emplacement) valeurs (?,?)", [Nom, emplacement]) P>
En outre, peut-être que votre syntaxe est éteinte, essayez ceci: p>
curseur.execute ("Insert dans les valeurs des utilisateurs ('% s', '% s')"% (nom, emplacement)) p>