Matraz - SQLite
Python tiene un soporte incorporado para SQlite. El módulo SQlite3 se envía con la distribución de Python. Para obtener un tutorial detallado sobre el uso de la base de datos SQLite en Python, consulte este enlace . En esta sección veremos cómo una aplicación Flask interactúa con SQLite.
Crea una base de datos SQLite ‘database.db’ y cree una tabla de estudiantes en ella.
import sqlite3
conn = sqlite3.connect('database.db')
print "Opened database successfully";
conn.execute('CREATE TABLE students (name TEXT, addr TEXT, city TEXT, pin TEXT)')
print "Table created successfully";
conn.close()
Nuestra aplicación Matraz tiene tres View funciones.
primero new_student() la función está vinculada a la regla de URL (‘/addnew’). Genera un archivo HTML que contiene un formulario de información del estudiante.
@app.route('/enternew')
def new_student():
return render_template('student.html')
El script HTML para ‘student.html’ es como sigue -
<html>
<body>
<form action = "{{ url_for('addrec') }}" method = "POST">
<h3>Student Information</h3>
Name<br>
<input type = "text" name = "nm" /></br>
Address<br>
<textarea name = "add" ></textarea><br>
City<br>
<input type = "text" name = "city" /><br>
PINCODE<br>
<input type = "text" name = "pin" /><br>
<input type = "submit" value = "submit" /><br>
</form>
</body>
</html>
Como puede verse, los datos del formulario se envían al ‘/addrec’ URL que une el addrec() función.
Esta addrec() función recupera los datos del formulario por POSTmétodo e inserciones en la tabla de estudiantes. El mensaje correspondiente al éxito o error en la operación de inserción se representa en‘result.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()
El script HTML de result.html contiene una declaración de escape {{msg}} que muestra el resultado de Insert operación.
<!doctype html>
<html>
<body>
result of addition : {{ msg }}
<h2><a href = "\">go back to home page</a></h2>
</body>
</html>
La aplicación contiene otra list() función representada por ‘/list’URL. Se puebla‘rows’ como un MultiDictobjeto que contiene todos los registros de la tabla de estudiantes. Este objeto se pasa allist.html modelo.
@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)
Esta list.html es una plantilla, que itera sobre el conjunto de filas y representa los datos en una tabla HTML.
<!doctype html>
<html>
<body>
<table border = 1>
<thead>
<td>Name</td>
<td>Address>/td<
<td>city</td>
<td>Pincode</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 = "/">Go back to home page</a>
</body>
</html>
Finalmente, el ‘/’ La regla de URL genera un ‘home.html’ que actúa como punto de entrada de la aplicación.
@app.route('/')
def home():
return render_template('home.html')
Aquí está el código completo de Flask-SQLite solicitud.
from flask import Flask, render_template, request
import sqlite3 as sql
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)
if __name__ == '__main__':
app.run(debug = True)
Ejecute este script desde el shell de Python y cuando el servidor de desarrollo comience a ejecutarse. Visitarhttp://localhost:5000/ en el navegador que muestra un menú simple como este -
Hacer clic ‘Add New Record’ enlace para abrir el Student Information Formar.
Complete los campos del formulario y envíelo. La función subyacente inserta el registro en la tabla de estudiantes.
Regrese a la página de inicio y haga clic en ‘Show List’enlace. Se mostrará la tabla que muestra los datos de muestra.