English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Python dispose d'une prise en charge intégrée pour SQLite. SQlite3Le module est fourni avec la distribution Python. Dans cette section, nous verrons comment l'application Flask interagit avec SQLite.
Créer une base de données SQLite ‘database.db’et y crée une table student.
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : fr.oldtoolbag.com # Date : 2020-08-08 import sqlite3 conn = sqlite3.connect('database.db') print "Base de données ouverte avec succès"; conn.execute('CREATE TABLE students (name TEXT, addr TEXT, city TEXT, pin TEXT)') print "Table créée avec succès"; conn.close()
L'application Flask possède trois fonctions de vue.
La fonction new_student() est liée à la règle d'URL (‘/addnew())。 Il présente le fichier HTML contenant le formulaire des informations sur les étudiants.
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : fr.oldtoolbag.com # Date : 2020-08-08 @app.route('/enternew') def new_student(): return render_template('student.html')
Le script HTML de 'student.html' est le suivant -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : fr.oldtoolbag.com # Date : 2020-08-08 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Flask示例</title> </head> <body> <form action="{{ url_for('addrec') }}" method="POST"> <h3>Informations sur l'étudiant</h3> Nom <input type = "text" name = "nm" /></br> Adresse<br> <textarea name = "add" /><br> Ville<br> <input type = "text" name = "city" /><br> Code postal<br> <input type = "text" name = "pin" /><br> <input type = "submit" value = "Soumettre" /><br> </form> </body> </html>
Il est possible de voir que les données du formulaire sont publiées vers l'URL correspondant à la fonction addrec() => ‘/addrec’ .
La fonction addrec() récupère les données du formulaire par la méthode POST et les insère dans la table des étudiants. Les messages correspondant au succès ou à l'échec de l'opération d'insertion sont présentés sous forme de 'result.html'.
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : fr.oldtoolbag.com # Date : 2020-08-08 @app.route('/addrec', methods = ['POST', 'GET']) def addrec(): if request.method == 'POST': try: nm = request.form['nm'] addr = request.form['add'] city = request.form['city'] pin = request.form['pin'] with sql.connect("database.db") as con: cur = con.cursor() cur.execute("INSERT INTO students (name,addr,city,pin) VALUES (?,?,?,?)",(nm,addr,city,pin)) con.commit() msg = "Record successfully added" except: con.rollback() msg = "error in insert operation" finally: return render_template("result.html", msg = msg) con.close()
result.html Le script HTML contient des instructions d'échappement pour afficher le résultat de l'opération d'insertion {{ msg }}.
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : fr.oldtoolbag.com # Date : 2020-08-08 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Flask示例</title> </head> <body> Résultat de l'opération : {{ msg }} <h2><a href = "/">Retour à la page d'accueil</a></h2> </body> </html>
L'application contient une correspondance URL => ‘/list’ représente une autre fonction list(). Elle remplit 'line' d'un objet MultiDict contenant toutes les entrées de la table des étudiants. Cet objet est passé au modèle list.html.
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : fr.oldtoolbag.com # Date : 2020-08-08 @app.route('/list') def list(): con = sql.connect("database.db") con.row_factory = sql.Row cur = con.cursor() cur.execute("select * from students rows = cur.fetchall(); return render_template("list.html", rows = rows)
Cette page list.html est un modèle qui parcourt la collection de lignes et affiche les données dans un tableau HTML.
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : fr.oldtoolbag.com # Date : 2020-08-08 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Flask示例</title> </head> <body> <table border = 1> thead> <td>改名</td> <td>地址</td> <td>城市</td> <td>编码</td> </thead> {% for row in rows %} tr> <td>{{row["name"]}}</td> <td>{{row["addr"]}}</td> <td>{{row["city"]}}</td> <td>{{row['pin']}}</td> </tr> {% endfor %} </table> <a href = "}}/">Retour à la page d'accueil</a> </body> </html>
最后,URL => ‘/‘呈现一个规则’home.html’作为应用程序的入口点。
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : fr.oldtoolbag.com # Date : 2020-08-08 @app.route('/) def home(): return render_template('home.html')
这里是Flask-完整代码的SQLite应用程序。
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : fr.oldtoolbag.com # Date : 2020-08-08 from flask import Flask, render_template, request import sqlite3 as sql import sqlite3 app = Flask(__name__) @app.route('/) def home(): return render_template('home.html') @app.route('/enternew') def new_student(): return render_template('student.html') @app.route('/addrec', methods = ['POST', 'GET']) def addrec(): if request.method == 'POST': try: nm = request.form['nm'] addr = request.form['add'] city = request.form['city'] pin = request.form['pin'] with sql.connect("database.db") as con: cur = con.cursor() cur.execute("INSERT INTO students (name,addr,city,pin) VALUES (?, ?, ?, ?)", (nm, addr, city, pin)) con.commit() msg = "Record successfully added" except: con.rollback() msg = "error in insert operation" finally: return render_template("result.html", msg = msg) con.close() @app.route('/list') def list(): con = sql.connect("database.db") con.row_factory = sql.Row cur = con.cursor() cur.execute("select * from students rows = cur.fetchall(); return render_template("list.html", rows = rows) @app.route('/init) def init(): conn = sqlite3.connect('database.db') print ("Base de données ouverte avec succès") conn.execute('CREATE TABLE students (name TEXT, addr TEXT, city TEXT, pin TEXT)') print ("Table créée avec succès") conn.close() return None if __name__ == '__main__': app.run(debug = True)
Exécutez ce script à partir de l'interpréteur Python et exécutez le serveur de développement lorsque celui-ci commence à s'exécuter. Accédez à :http:// localhost:5000/ Affichez un tel menu simple dans le navigateur -
Cliquez Ajouter des informations sur l'étudiant L'ouverture du lien ouvre le formulaire d'ajout d'informations sur l'étudiant.
Remplissez le formulaire et soumettez-le. La fonction de niveau inférieur insère cet enregistrement dans la table des étudiants.
Retour à la page d'accueil et cliquez sur le lien "Afficher la liste", le tableau de données d'échantillon s'affichera.