CoolFace
Apppublic

Kaballas/postgresql-hosting

sourceHugging Faceapache-2.0updated 11mo agoView on Hugging Face
0likes
app.py89 linesDownload Raw Back to root
1from fastapi import FastAPI, HTTPException2import psycopg23from psycopg2.extras import RealDictCursor4import os5 6app = FastAPI()7 8# Database connection details9DB_NAME = os.getenv("POSTGRES_DB", "mydatabase")10DB_USER = os.getenv("POSTGRES_USER", "myuser")11DB_PASSWORD = os.getenv("POSTGRES_PASSWORD", "mypassword")12DB_HOST = os.getenv("POSTGRES_HOST", "localhost")13DB_PORT = os.getenv("POSTGRES_PORT", "5432")14 15def get_db_connection():16    try:17        conn = psycopg2.connect(18            dbname=DB_NAME,19            user=DB_USER,20            password=DB_PASSWORD,21            host=DB_HOST,22            port=DB_PORT,23            cursor_factory=RealDictCursor  # So we can return rows as dictionaries24        )25        return conn26    except Exception as e:27        print(f"Error connecting to the database: {e}")28        raise HTTPException(status_code=500, detail="Database connection error")29 30def create_table():31    conn = get_db_connection()32    cursor = conn.cursor()33    cursor.execute("""34        CREATE TABLE IF NOT EXISTS items (35            id SERIAL PRIMARY KEY,36            name VARCHAR(50) NOT NULL,37            description TEXT38        );39    """)40    conn.commit()41    cursor.close()42    conn.close()43    44    45@app.get("/")46def read_root():47    return {"message": "Welcome to FastAPI with PostgreSQL!"}48 49@app.get("/items/")50def read_items():51    conn = get_db_connection()52    cursor = conn.cursor()53    try:54        cursor.execute("SELECT * FROM items;")55    except Exception as e:56        print(e)57        create_table()58        cursor.execute("SELECT * FROM items;")59    items = cursor.fetchall()60    cursor.close()61    conn.close()62 63    return items64 65@app.post("/items/")66def create_item(name: str, description: str = "description"):67    conn = get_db_connection()68    cursor = conn.cursor()69    create_table()70    71    try:72        cursor.execute(73            "INSERT INTO items (name, description) VALUES (%s, %s) RETURNING id;",74            (name, description)75        )76    except Exception as e:77        print(e)78        create_table()79        cursor.execute(80            "INSERT INTO items (name, description) VALUES (%s, %s) RETURNING id;",81            (name, description)82        )83    item_id = cursor.fetchone()['id']84    conn.commit()85    cursor.close()86    conn.close()87 88    return {"id": item_id, "name": name, "description": description}89