Automatically generate a RESTful API service from any existing database without writing code.
sandman2 is a Python tool that automatically generates a RESTful API service from an existing database without requiring any code to be written. It connects to databases like PostgreSQL, MySQL, or SQLite, introspects the schema, and instantly provides a fully functional API with hypermedia support. It solves the problem of accessing legacy or proprietary databases through cumbersome interfaces by offering a standardized REST API.
Developers and data engineers who need to quickly expose database content as REST APIs, especially for legacy systems, internal tools, or prototyping. It's also useful for organizations wanting to provide programmatic access to databases without developing custom backend code.
Developers choose sandman2 because it eliminates the need for boilerplate ORM and API code, saving significant development time. Its zero-configuration approach, broad database support, and built-in admin interface make it a unique, low-effort solution for instant API generation.
Automatically generate a RESTful API service for your legacy database. No code required!
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Simply provide a database connection string via sandman2ctl to instantly create REST endpoints for all tables, eliminating boilerplate ORM and API code as shown in the quickstart.
Works with any SQLAlchemy-compatible database including PostgreSQL, MySQL, SQLite, and Oracle, with third-party extensions for others like IBM DB2, as listed in the supported databases section.
Includes a modern web-based UI for visually browsing and managing database content, demonstrated with a screenshot in the README, enhancing usability over command-line access.
Official Docker image with configurable environment variables simplifies containerized deployments, detailed in the 'Running sandman2 under Docker' section with example parameters.
Fine-grained control over endpoints or table exposure requires integrating sandman2 into a custom Python application, as admitted in the 'Customizing' section, adding development overhead.
API structure is tightly coupled to the database schema, limiting flexibility for RESTful design patterns or naming conventions independent of the underlying database tables.
Lacks built-in support for features like rate limiting, advanced caching, or non-CRUD operations (e.g., complex joins) without manual extension, making it less suitable for production-grade APIs with specific needs.