English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
O Python possui suporte nativo para SQlite. SQlite3O módulo está incluído no lançamento do Python. Nesta seção, veremos como o aplicativo Flask interage com o SQLite.
Cria um banco de dados SQLite ‘database.db’e nele cria uma tabela student.
# Filename : example.py # Copyright : 2020 By w3codebox # Author by: pt.oldtoolbag.com # Date : 2020-08-08 import sqlite3 conn = sqlite3.connect('database.db') print "Banco de dados aberto com sucesso"; conn.execute('CREATE TABLE students (name TEXT, addr TEXT, city TEXT, pin TEXT)') print "Tabela criada com sucesso"; conn.close()
O aplicativo Flask tem três funções de visão.
A função new_student() primeira é vinculada à regra de URL (‘/addnew())
# Filename : example.py # Copyright : 2020 By w3codebox # Author by: pt.oldtoolbag.com # Date : 2020-08-08 @app.route('/enternew') def new_student(): return render_template('student.html')
O script HTML de 'student.html' é o seguinte -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by: pt.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>Informações do aluno</h3> Nome <input type = "text" name = "nm" /></br> Endereço<br> <textarea name = "add" /><br> Cidade<br> <input type = "text" name = "city" /><br> Código postal<br> <input type = "text" name = "pin" /><br> <input type = "submit" value = "Enviar" /><br> </form> </body> </html>
Pode-se ver que os dados do formulário são publicados para o URL => ‘/addrec’ .
A função addrec() recupera os dados do formulário via método POST e insere-os na tabela de alunos. As mensagens correspondentes ao sucesso ou falha da operação de inserção são exibidas em 'result.html'.
# Filename : example.py # Copyright : 2020 By w3codebox # Author by: pt.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 O script HTML contém expressões de escape para exibir o resultado da operação de inserção {{ msg }}.
# Filename : example.py # Copyright : 2020 By w3codebox # Author by: pt.oldtoolbag.com # Date : 2020-08-08 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Flask示例</title> </head> <body> Resultado da operação: {{ msg }} <h2><a href = "/">Voltar para a página inicial</a></h2> </body> </html>
Este aplicativo contém por URL => '/A expressão 'list' representa outra função list(). Ela preenche 'linha' com um objeto MultiDict contendo todos os registros da tabela de alunos. Este objeto é passado para o modelo list.html.
# Filename : example.py # Copyright : 2020 By w3codebox # Author by: pt.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)
Este list.html é um modelo que percorre o conjunto de linhas e exibe os dados em uma tabela HTML.
# Filename : example.py # Copyright : 2020 By w3codebox # Author by: pt.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 = "}}/">Voltar para a página inicial</a> </body> </html>
Por fim, URL => ‘/‘apresentar uma regra’home.html’como ponto de entrada da aplicação.
# Filename : example.py # Copyright : 2020 By w3codebox # Author by: pt.oldtoolbag.com # Date : 2020-08-08 @app.route('/) def home(): return render_template('home.html')
Aqui está o Flask-Código completo de aplicativo SQLite.
# Filename : example.py # Copyright : 2020 By w3codebox # Author by: pt.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("Banco de dados aberto com sucesso") conn.execute('CREATE TABLE students (name TEXT, addr TEXT, city TEXT, pin TEXT)') print("Tabela criada com sucesso") conn.close() return None if __name__ == '__main__': app.run(debug=True)
Execute este script no shell do Python e execute o servidor de desenvolvimento quando ele começar a rodar. Acesse: http:// localhost:5000/ Exiba um menu simples assim no navegador -
Clique “Adicionar Informações de Aluno” Abra o formulário de adição de informações de aluno.
Preencha o formulário e submeta. A função de nível inferior insere o registro na tabela de alunos.
Retorne à página inicial e clique no link "Exibir Lista", para exibir a tabela de dados de amostra.