Automatic API generator that creates a REST API mirror of a database
Project description
prism-py
Overview
prism-py is a Python library for automatic API generation from database schemas. It creates a complete REST API that mirrors your database structure, handling tables, views, functions, and procedures with proper type safety and validation.
Built on top of FastAPI, prism-py eliminates boilerplate code and provides a comprehensive type system for API development, allowing you to focus on business logic instead of API structure.
Note: This library is part of the Prism ecosystem, which includes prism-ts, a TypeScript client library that consumes prism-py APIs with full type safety.
Key Features
- Automatic Route Generation: Create CRUD endpoints for tables, views, functions, and procedures
- Type Safety: Full type handling with proper conversions between SQL and Python types
- Database Independence: Support for PostgreSQL, MySQL, and SQLite
- Schema-Based Organization: Routes organized by database schemas for clean API structure
- Enhanced Filtering: Sorting, pagination, and complex query support
- Metadata API: Explore your database structure programmatically
- Health Monitoring: Built-in health check endpoints
- Zero Boilerplate: Generate complete APIs with minimal code
Installation
pip install prism-py
Quick Start
Here's a minimal example to get you started:
from fastapi import FastAPI
from prism import ApiPrism, PrismConfig, DbClient, DbConfig, PoolConfig, ModelManager
# Initialize FastAPI app
app = FastAPI()
# Configure database connection
db_client = DbClient(
config=DbConfig(
db_type="postgresql",
driver_type="sync",
database="yourdb",
user="username",
password="password",
host="localhost",
port=5432,
pool_config=PoolConfig(
pool_size=5,
max_overflow=10,
pool_pre_ping=True
)
)
)
# Create model manager with selected schemas
model_manager = ModelManager(
db_client=db_client,
include_schemas=["public", "app"]
)
# Initialize API generator
api_prism = ApiPrism(
config=PrismConfig(
project_name="My API",
version="1.0.0",
description="Auto-generated API for my database"
),
app=app
)
# Generate all routes
api_prism.generate_all_routes(model_manager)
# Print welcome message with API documentation link
api_prism.print_welcome(db_client)
Generated Routes
prism-py automatically creates the following types of routes:
Table Routes
POST /{schema}/{table}- Create a recordGET /{schema}/{table}- Read records with filteringPUT /{schema}/{table}- Update recordsDELETE /{schema}/{table}- Delete records
View Routes
GET /{schema}/{view}- Read from view with optional filtering
Function/Procedure Routes
POST /{schema}/fn/{function}- Execute database functionPOST /{schema}/proc/{procedure}- Execute stored procedure
Metadata Routes
GET /dt/schemas- List all database schemas and structureGET /dt/{schema}/tables- List all tables in a schemaGET /dt/{schema}/views- List all views in a schemaGET /dt/{schema}/functions- List all functions in a schemaGET /dt/{schema}/procedures- List all procedures in a schema
Health Routes
GET /health- Get API health statusGET /health/ping- Basic connectivity checkGET /health/cache- Check metadata cache statusPOST /health/clear-cache- Clear and reload metadata cache
Usage Examples
See the examples directory for complete sample applications:
- Hub Example: Shows complex database integration with multiple schemas
- Basic Example: Demonstrates essential setup and configuration
The Prism Ecosystem
prism-py is part of the Prism ecosystem, designed to create a seamless bridge between your database and type-safe client applications:
- prism-py (Python): Server-side library for automatic API generation
- prism-ts (TypeScript, formerly ts-prism): Client-side library for consuming prism-py APIs with full type safety
Together, these libraries enable end-to-end type safety and eliminate boilerplate code across your full stack.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file prism_py-0.0.5.tar.gz.
File metadata
- Download URL: prism_py-0.0.5.tar.gz
- Upload date:
- Size: 47.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab765be59d37e442267e6e97bae452c8ad535684299296e50e90b22696ea28cd
|
|
| MD5 |
948fb1f1632c2c1866c64140e53e88bd
|
|
| BLAKE2b-256 |
46f2fd35fe6ce19624e6ed7b670fba9c439449ad255311235dadb28b6e8adc36
|
File details
Details for the file prism_py-0.0.5-py3-none-any.whl.
File metadata
- Download URL: prism_py-0.0.5-py3-none-any.whl
- Upload date:
- Size: 40.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55485c2ca0f10026d3e106d7d2d2e34157035d10e1be3b0885972f80d5eac958
|
|
| MD5 |
8275b5d699cabea6494db7bb14392cca
|
|
| BLAKE2b-256 |
a2a8f49be57031f9070a2cb186a233772c484f279a9b2dd63f875402497c89f1
|