IMAN NOOR
Prompt per generar aplicació en Python:

Prompt per generar aplicació en Python:

1. Per què fem servir Python?

Fem servir Python perquè l’HTML sol és “estàtic” (no canvia). Amb Python i el framework Flask, podem fer que la web sigui “dinàmica”. Això vol dir que la web pot:

  • Guardar informació: Com noms d’usuaris o punts d’un joc en una base de dades (MySQL).
  • Recordar l’usuari: Mitjançant les “sessions”, la web sap qui ets mentre navegues.
  • Créixer: És fàcil afegir noves funcions sense haver de tornar a començar de zero.

2- Com hem organitzat el codi:

El nostre codi està separat en peces (modular) perquè sigui fàcil de llegir i no tingui errors. Seguim les regles PEP8 (codi net).

Exemple de codi simple (App.py): “Codi inicial amb error”

from flask import Flask, render_template, request, session
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.secret_key = "clau_per_a_seguretat"

# Connectem Python amb la base de dades MySQL
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://usuari:password@localhost/la_meva_db'
db = SQLAlchemy(app)

# Creem una taula per guardar participants
class Participant(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    nom = db.Column(db.String(50))

El Repte: Error de Llibreria:

Inicialment, funcionava perquè el portàtil de l’escola no permetia instal·lar flask-sqlalchemy. L’error era: ModuleNotFoundError.

La Solució: Ús de SQLite3:

Vaig decidir canviar a la llibreria SQLite3. Aquesta llibreria està integrada dins de Python i no requereix instal·lació externa. Això fa que l’aplicació sigui portable i funcioni en qualsevol entorn escolar

Aquesta es el codi:(Codi final optimitzat)

from flask import Flask, render_template, request, redirect
import sqlite3  # This is built-in! No download needed.

app = Flask(__name__)

# 1. Setup the database (This happens inside the computer memory or a local file)
def init_db():
    conn = sqlite3.connect('database.db')
    cursor = conn.cursor()
    # Create a simple table for participants
    cursor.execute('CREATE TABLE IF NOT EXISTS participants (id INTEGER PRIMARY KEY, name TEXT)')
    conn.commit()
    conn.close()

# Run the setup
init_db()

@app.route('/')
def index():
    # Connect and get the names
    conn = sqlite3.connect('database.db')
    cursor = conn.cursor()
    cursor.execute('SELECT * FROM participants')
    data = cursor.fetchall()
    conn.close()
    return render_template('index.html', participants=data)

@app.route('/add', methods=['POST'])
def add_name():
    user_name = request.form.get('name')
    if user_name:
        conn = sqlite3.connect('database.db')
        cursor = conn.cursor()
        cursor.execute('INSERT INTO participants (name) VALUES (?)', (user_name,))
        conn.commit()
        conn.close()
    return redirect('/')

if __name__ == '__main__':
    app.run(debug=True)