-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathapp.py
87 lines (73 loc) · 2.91 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# ESCOLA TÉCNICA ESTADUAL PORTO DIGITAL
# RECIFE, 03/11/2020
# ALUNO: CARLOS ALVAREZ & GUILHERME MOREIRA (2º A)
# -=-=-=-=-=- HELLO WORLD COM FLASK & -=-=-=-=-=-
# -=-=-=-=-=- CONEXÃO SQLITE3 -=-=-=-=-=-
# ESTE CÓDIGO UTILIZOU COMO BASE OS SEGUINTES LINKS:
# https://docs.python.org/3/library/sqlite3.html
# https://flask.palletsprojects.com/en/1.1.x/quickstart/
# https://docs.google.com/document/d/1ulinGDvnOazmWhX9DeT7P7nG19XGabvueb1q215JtSc/edit
# https://docs.google.com/document/d/1ulinGDvnOazmWhX9DeT7P7nG19XGabvueb1q215JtSc/edit
# e M U I T O stackOverflow
#! Importando dependências
# Flask → Permite que a aplicação flask rode
# render_template → Permite o uso do JINJA no html
# request → Permite que o usuário insira os valores do JSON do método POST
# json → Conjunto de métodos utilizados para o JSON
from flask import Flask, render_template, request, json
# db → Funções do arquivo "db.py"
# sqlite3 → Conjunto de funções do sqlite
import db
import sqlite3
# Inicializando o app do Flask com o diretorio para possivel html (escalabilidade)
app = Flask(__name__, template_folder="templates")
db.defaultTable()
#! Método GET padrão (estilo "hello world!")
@app.route("/")
def hello_world():
# Método de retornar um JINJA
message = "Hello, Flask + Jinja 🐍"
return render_template("index.html", message=message)
#! Método POST
@app.route("/cadastro", methods=["POST"])
def cadastro():
# Esta função permite que o valor id_carros consiga ser incrementado à medida que um
# valor é inserido no banco de dados. Se um valor não existir, 1 é o padrão.
try:
id_carros = db.getLastID()
except:
id_carros = 1
#! JSON
# Cada veículo terá como chave o seu ID (autoincrementado automaticamente)
# E as informações mais notáveis do veículo também serão inseridas nesta etapa
informacoes = [{
id_carros: {
"modelo": request.json["modelo"],
"quilometragem": request.json["quilometragem"],
"ano": request.json["ano"],
"placa": request.json["placa"],
"condicao": request.json["condicao"],
"preco": request.json["preco"]
}
}]
db.jsonToDB(informacoes)
return(json.dumps(informacoes))
#! SEGUNDO MÉTODO GET
@app.route("/info")
def info():
# É preciso abrir uma conexão neste arquivo. Se não houver,
# o sqlite retornará um erro de threads
conn = sqlite3.connect("carros.db")
c = conn.cursor()
# Esta atribuição permite que a variável data consiga
# armazenar todos os valores da tabela carros
data = c.execute("""
SELECT * FROM carros;
""").fetchall()
# O que retorna é um json do banco de dados
return json.dumps(data)
#! Comando para fazer o flask rodar
# A opção debug faz com que o server seja atualizado a cada
# modificação
if __name__ == "__main__":
app.run(debug=True, port=5000)