-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
231 lines (223 loc) · 5.83 KB
/
Copy pathapp.py
File metadata and controls
231 lines (223 loc) · 5.83 KB
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
from flask import Flask, jsonify, request
import mysql.connector
from mysql.connector import Error
from flasgger import Swagger
app = Flask(__name__)
swagger = Swagger(app)
def conectar():
try:
conn = mysql.connector.connect(
host='seu_host',
database='seu_banco_de_dados',
user='seu_usuario',
password='sua_senha'
)
if conn.is_connected():
return conn
except Error as e:
print(e)
# Consultar todos os carros (GET)
@app.route('/carros', methods=['GET'])
def obter_carros():
"""
Consulta todos os carros
---
responses:
200:
description: Lista de todos os carros
schema:
type: array
items:
type: object
properties:
id:
type: integer
description: ID do carro
modelo:
type: string
description: Modelo do carro
marca:
type: string
description: Marca do carro
"""
try:
conn = conectar()
cursor = conn.cursor(dictionary=True)
cursor.execute("SELECT * FROM carros")
rows = cursor.fetchall()
return jsonify(rows)
finally:
if conn.is_connected():
cursor.close()
conn.close()
# Consultar carro por ID (GET)
@app.route('/carros/<int:id>', methods=['GET'])
def obter_carro_por_id(id):
"""
Consulta um carro por ID
---
parameters:
- name: id
in: path
type: integer
required: true
description: ID do carro
responses:
200:
description: Carro encontrado
schema:
type: object
properties:
id:
type: integer
description: ID do carro
modelo:
type: string
description: Modelo do carro
marca:
type: string
description: Marca do carro
"""
try:
conn = conectar()
cursor = conn.cursor(dictionary=True)
cursor.execute("SELECT * FROM carros WHERE id = %s", (id,))
row = cursor.fetchone()
return jsonify(row)
finally:
if conn.is_connected():
cursor.close()
conn.close()
# Editar carro por ID (PUT)
@app.route('/carros/<int:id>', methods=['PUT'])
def editar_carro_por_id(id):
"""
Edita um carro por ID
---
parameters:
- name: id
in: path
type: integer
required: true
description: ID do carro
- name: body
in: body
required: true
description: Dados do carro a serem editados
schema:
type: object
properties:
modelo:
type: string
description: Modelo do carro
marca:
type: string
description: Marca do carro
responses:
200:
description: Carro editado com sucesso
schema:
type: object
properties:
modelo:
type: string
description: Modelo do carro
marca:
type: string
description: Marca do carro
"""
carro_alterado = request.get_json()
try:
conn = conectar()
cursor = conn.cursor()
cursor.execute("UPDATE carros SET modelo = %s, marca = %s WHERE id = %s",
(carro_alterado['modelo'], carro_alterado['marca'], id))
conn.commit()
return jsonify(carro_alterado)
finally:
if conn.is_connected():
cursor.close()
conn.close()
# Criar carro (POST)
@app.route('/carros', methods=['POST'])
def incluir_novo_carro():
"""
Cria um novo carro
---
parameters:
- name: body
in: body
required: true
description: Dados do novo carro
schema:
type: object
properties:
modelo:
type: string
description: Modelo do carro
marca:
type: string
description: Marca do carro
responses:
201:
description: Carro criado com sucesso
schema:
type: object
properties:
id:
type: integer
description: ID do carro
modelo:
type: string
description: Modelo do carro
marca:
type: string
description: Marca do carro
"""
novo_carro = request.get_json()
try:
conn = conectar()
cursor = conn.cursor()
cursor.execute("INSERT INTO carros (modelo, marca) VALUES (%s, %s)",
(novo_carro['modelo'], novo_carro['marca']))
conn.commit()
novo_carro['id'] = cursor.lastrowid
return jsonify(novo_carro), 201
finally:
if conn.is_connected():
cursor.close()
conn.close()
# Deletar um carro (DELETE)
@app.route('/carros/<int:id>', methods=['DELETE'])
def excluir_carro(id):
"""
Deleta um carro por ID
---
parameters:
- name: id
in: path
type: integer
required: true
description: ID do carro
responses:
200:
description: Carro deletado com sucesso
schema:
type: object
properties:
message:
type: string
description: Mensagem de sucesso
"""
try:
conn = conectar()
cursor = conn.cursor()
cursor.execute("DELETE FROM carros WHERE id = %s", (id,))
conn.commit()
return jsonify({'message': 'Carro deletado com sucesso'})
finally:
if conn.is_connected():
cursor.close()
conn.close()
if __name__ == '__main__':
app.run(port=5000, host='localhost', debug=True)