Spaces:
				
			
			
	
			
			
		Runtime error
		
	
	
	
			
			
	
	
	
	
		
		
		Runtime error
		
	| from fastapi import FastAPI, HTTPException | |
| import psycopg2 | |
| from psycopg2.extras import RealDictCursor | |
| import os | |
| app = FastAPI() | |
| # Database connection details | |
| DB_NAME = os.getenv("POSTGRES_DB", "mydatabase") | |
| DB_USER = os.getenv("POSTGRES_USER", "myuser") | |
| DB_PASSWORD = os.getenv("POSTGRES_PASSWORD", "mypassword") | |
| DB_HOST = os.getenv("POSTGRES_HOST", "localhost") | |
| DB_PORT = os.getenv("POSTGRES_PORT", "5432") | |
| def get_db_connection(): | |
| try: | |
| conn = psycopg2.connect( | |
| dbname=DB_NAME, | |
| user=DB_USER, | |
| password=DB_PASSWORD, | |
| host=DB_HOST, | |
| port=DB_PORT, | |
| cursor_factory=RealDictCursor # So we can return rows as dictionaries | |
| ) | |
| return conn | |
| except Exception as e: | |
| print(f"Error connecting to the database: {e}") | |
| raise HTTPException(status_code=500, detail="Database connection error") | |
| def create_table(): | |
| conn = get_db_connection() | |
| cursor = conn.cursor() | |
| cursor.execute(""" | |
| CREATE TABLE IF NOT EXISTS items ( | |
| id SERIAL PRIMARY KEY, | |
| name VARCHAR(50) NOT NULL, | |
| description TEXT | |
| ); | |
| """) | |
| conn.commit() | |
| cursor.close() | |
| conn.close() | |
| def read_root(): | |
| return {"message": "Welcome to FastAPI with PostgreSQL!"} | |
| def read_items(): | |
| conn = get_db_connection() | |
| cursor = conn.cursor() | |
| try: | |
| cursor.execute("SELECT * FROM items;") | |
| except Exception as e: | |
| print(e) | |
| create_table() | |
| cursor.execute("SELECT * FROM items;") | |
| items = cursor.fetchall() | |
| cursor.close() | |
| conn.close() | |
| return items | |
| def create_item(name: str, description: str = "description"): | |
| conn = get_db_connection() | |
| cursor = conn.cursor() | |
| create_table() | |
| try: | |
| cursor.execute( | |
| "INSERT INTO items (name, description) VALUES (%s, %s) RETURNING id;", | |
| (name, description) | |
| ) | |
| except Exception as e: | |
| print(e) | |
| create_table() | |
| cursor.execute( | |
| "INSERT INTO items (name, description) VALUES (%s, %s) RETURNING id;", | |
| (name, description) | |
| ) | |
| item_id = cursor.fetchone()['id'] | |
| conn.commit() | |
| cursor.close() | |
| conn.close() | |
| return {"id": item_id, "name": name, "description": description} | |