{"id":25979,"date":"2025-04-16T13:49:55","date_gmt":"2025-04-16T16:49:55","guid":{"rendered":"https:\/\/maurinsoft.com.br\/?p=25979"},"modified":"2025-04-16T13:49:56","modified_gmt":"2025-04-16T16:49:56","slug":"exemplo-pratico-de-python-para-loja-acai","status":"publish","type":"post","link":"https:\/\/maurinsoft.com.br\/wp\/exemplo-pratico-de-python-para-loja-acai\/","title":{"rendered":"Exemplo pr\u00e1tico de Python para loja A\u00e7a\u00ed"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">Tutorial: Web Services em Python para a Tabela Clientes<\/h1>\n\n\n\n<p>Neste tutorial, vamos criar uma API REST simples em Python utilizando o <strong>Flask<\/strong> para consumir a tabela <em>Clientes<\/em> de um banco de dados SQLite. Voc\u00ea aprender\u00e1 como utilizar os principais verbos HTTP (GET, POST, PUT e DELETE) para realizar opera\u00e7\u00f5es de leitura, cria\u00e7\u00e3o, atualiza\u00e7\u00e3o e exclus\u00e3o de registros.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Requisitos<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Python 3 instalado<\/li>\n\n\n\n<li>Pacote Flask (instal\u00e1vel via <code>pip install flask<\/code>)<\/li>\n\n\n\n<li>Banco de dados SQLite j\u00e1 criado com a tabela <code>clientes<\/code><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Estrutura da Tabela Clientes<\/h2>\n\n\n\n<p>Considere que a tabela <strong>clientes<\/strong> foi criada com a seguinte estrutura:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\nCREATE TABLE clientes (\n  id_cliente INTEGER PRIMARY KEY AUTOINCREMENT,\n  nome TEXT NOT NULL,\n  telefone TEXT,\n  email TEXT\n);\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">C\u00f3digo do Web Service<\/h2>\n\n\n\n<p>O c\u00f3digo a seguir implementa uma API REST utilizando Flask. Ele define uma rota para cada opera\u00e7\u00e3o (GET, POST, PUT e DELETE) na tabela <em>clientes<\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\nfrom flask import Flask, request, jsonify, abort\nimport sqlite3\n\napp = Flask(__name__)\nDATABASE = 'loja_acai.db'  # Nome do banco de dados SQLite\n\ndef get_db():\n    \"\"\"Abre uma conex\u00e3o com o banco de dados e define o row_factory para retornar dicts.\"\"\"\n    conn = sqlite3.connect(DATABASE)\n    conn.row_factory = sqlite3.Row\n    return conn\n\n# 1. GET \/clientes - Retorna todos os clientes\n@app.route('\/clientes', methods=&#91;'GET'])\ndef get_clientes():\n    conn = get_db()\n    clientes = conn.execute(\"SELECT * FROM clientes\").fetchall()\n    conn.close()\n    return jsonify(&#91;dict(row) for row in clientes])\n\n# 2. GET \/clientes\/&amp;lt;id&amp;gt; - Retorna um cliente espec\u00edfico\n@app.route('\/clientes\/&amp;lt;int:id&amp;gt;', methods=&#91;'GET'])\ndef get_cliente(id):\n    conn = get_db()\n    cliente = conn.execute(\"SELECT * FROM clientes WHERE id_cliente = ?\", (id,)).fetchone()\n    conn.close()\n    if cliente is None:\n        abort(404)\n    return jsonify(dict(cliente))\n\n# 3. POST \/clientes - Cria um novo cliente\n@app.route('\/clientes', methods=&#91;'POST'])\ndef create_cliente():\n    if not request.json or 'nome' not in request.json:\n        abort(400)\n    cliente = {\n        'nome': request.json&#91;'nome'],\n        'telefone': request.json.get('telefone', ''),\n        'email': request.json.get('email', '')\n    }\n    conn = get_db()\n    cur = conn.cursor()\n    cur.execute(\"INSERT INTO clientes (nome, telefone, email) VALUES (?, ?, ?)\",\n                (cliente&#91;'nome'], cliente&#91;'telefone'], cliente&#91;'email']))\n    conn.commit()\n    cliente&#91;'id_cliente'] = cur.lastrowid\n    conn.close()\n    return jsonify(cliente), 201\n\n# 4. PUT \/clientes\/&amp;lt;id&amp;gt; - Atualiza um cliente existente\n@app.route('\/clientes\/&amp;lt;int:id&amp;gt;', methods=&#91;'PUT'])\ndef update_cliente(id):\n    if not request.json:\n        abort(400)\n    campos = &#91;]\n    valores = &#91;]\n    for campo in &#91;'nome', 'telefone', 'email']:\n        if campo in request.json:\n            campos.append(f\"{campo} = ?\")\n            valores.append(request.json&#91;campo])\n    if not campos:\n        abort(400)\n    valores.append(id)\n    conn = get_db()\n    conn.execute(f\"UPDATE clientes SET {', '.join(campos)} WHERE id_cliente = ?\", valores)\n    conn.commit()\n    conn.close()\n    return jsonify({'result': True})\n\n# 5. DELETE \/clientes\/&amp;lt;id&amp;gt; - Remove um cliente\n@app.route('\/clientes\/&amp;lt;int:id&amp;gt;', methods=&#91;'DELETE'])\ndef delete_cliente(id):\n    conn = get_db()\n    conn.execute(\"DELETE FROM clientes WHERE id_cliente = ?\", (id,))\n    conn.commit()\n    conn.close()\n    return jsonify({'result': True})\n\nif __name__ == '__main__':\n    app.run(debug=True)\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Entendendo os Verbos HTTP<\/h2>\n\n\n\n<p>Neste exemplo, utilizamos os seguintes m\u00e9todos HTTP:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>GET<\/strong>: Utilizado para recuperar dados. Temos dois endpoints:\n<ul class=\"wp-block-list\">\n<li><code>GET \/clientes<\/code> &#8211; retorna todos os clientes;<\/li>\n\n\n\n<li><code>GET \/clientes\/&lt;id><\/code> &#8211; retorna um cliente espec\u00edfico.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>POST<\/strong>: Utilizado para criar um novo recurso. O endpoint <code>POST \/clientes<\/code> recebe dados no formato JSON para inserir um novo cliente.<\/li>\n\n\n\n<li><strong>PUT<\/strong>: Utilizado para atualizar um recurso existente. O endpoint <code>PUT \/clientes\/&lt;id><\/code> recebe os campos que devem ser atualizados do cliente informado.<\/li>\n\n\n\n<li><strong>DELETE<\/strong>: Utilizado para remover um recurso. O endpoint <code>DELETE \/clientes\/&lt;id><\/code> exclui o cliente com o id informado.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Como Executar e Testar a API<\/h2>\n\n\n\n<p>Siga os passos abaixo para executar e testar a API:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Salve o c\u00f3digo em um arquivo, por exemplo, <code>app.py<\/code>.<\/li>\n\n\n\n<li>Certifique-se de que o banco de dados <code>loja_acai.db<\/code> existe e cont\u00e9m a tabela <code>clientes<\/code>.<\/li>\n\n\n\n<li>Instale o Flask se ainda n\u00e3o o fez: <code>pip install flask<\/code><\/li>\n\n\n\n<li>Execute o aplicativo: <code>python app.py<\/code><\/li>\n\n\n\n<li>Acesse os endpoints utilizando ferramentas como <strong>Postman<\/strong> ou o <strong>curl<\/strong> via linha de comando.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Conclus\u00e3o<\/h2>\n\n\n\n<p>Este tutorial apresentou de forma did\u00e1tica como criar web services em Python para a tabela <em>clientes<\/em> utilizando Flask, explorando os verbos HTTP b\u00e1sicos necess\u00e1rios para a manipula\u00e7\u00e3o dos dados (GET, POST, PUT e DELETE). Essa estrutura pode ser facilmente expandida para incluir outras tabelas e funcionalidades em seu projeto.<\/p>\n\n\n\n<p>Experimente testar e modificar os endpoints para adaptar \u00e0 sua aplica\u00e7\u00e3o.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tutorial: Web Services em Python para a Tabela Clientes Neste tutorial, vamos criar uma API REST simples em Python utilizando o Flask para consumir a tabela Clientes de um banco de dados SQLite. Voc\u00ea aprender\u00e1 como utilizar os principais verbos HTTP (GET, POST, PUT e DELETE) para realizar opera\u00e7\u00f5es de leitura, cria\u00e7\u00e3o, atualiza\u00e7\u00e3o e exclus\u00e3o [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[51,74],"tags":[],"class_list":["post-25979","post","type-post","status-publish","format-standard","hentry","category-python","category-sqlite-banco-de-dados"],"_links":{"self":[{"href":"https:\/\/maurinsoft.com.br\/wp\/wp-json\/wp\/v2\/posts\/25979","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/maurinsoft.com.br\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/maurinsoft.com.br\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/maurinsoft.com.br\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/maurinsoft.com.br\/wp\/wp-json\/wp\/v2\/comments?post=25979"}],"version-history":[{"count":1,"href":"https:\/\/maurinsoft.com.br\/wp\/wp-json\/wp\/v2\/posts\/25979\/revisions"}],"predecessor-version":[{"id":25980,"href":"https:\/\/maurinsoft.com.br\/wp\/wp-json\/wp\/v2\/posts\/25979\/revisions\/25980"}],"wp:attachment":[{"href":"https:\/\/maurinsoft.com.br\/wp\/wp-json\/wp\/v2\/media?parent=25979"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/maurinsoft.com.br\/wp\/wp-json\/wp\/v2\/categories?post=25979"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/maurinsoft.com.br\/wp\/wp-json\/wp\/v2\/tags?post=25979"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}