¿Una biblioteca liviana para exponer tablas de bases de datos SQL a través de HTTP con consultas?

¿Sería capaz de recomendar una biblioteca/herramienta simple de código abierto para ejecutar en Linux, que serviría una API similar a REST básicamente sirviendo el contenido de las bases de datos SQL (en Postgres) a través de HTTP con URL amigables? Se prefiere Python, pero no es obligatorio.

por ejemplo, si tuviera una base de datos con dos tablas:

employees (id, name, city, dep_id)
departments (id, name)

Me gustaría enviar fácilmente solicitudes HTTP como:

GET http://$HOST/employees?city=Paris
GET http://$HOST/employees?dep_id=4&city=Berlin,Paris
GET http://$HOST/departments?name=Legal,Finance

etc. Soy flexible con cualquier sintaxis que deba usarse para las URL. Pero el objetivo es evitar el trabajo manual de mapear estas tablas a través de ORM, luego mapear eso a URL, etc. Idealmente, no se necesita programación (pero está permitido si quisiera agregar un formato de salida personalizado, etc.) También entiendo esta herramienta sólo podía ofrecer SELECTcon sólo cláusulas limitadas WHERE.

Por cierto, los programas adminer.php y myphpadmin ofrecen una GUI completa basada en web. Sin embargo, no acceda como arriba.

Respuestas (3)

Puede probar el servidor HTTP nginx junto con el módulo ngx_postgres . ngx_postgrespermite nginxcomunicarse con PostgreSQLla base de datos. Sus requisitos básicos están satisfechos por lo que veo:

  • No se necesita programación. Solo ngx_postgresse debe especificar la configuración para asignar direcciones URL a consultas de bases de datos.
  • Al menos SELECT con soporte de cláusula WHERE (ver ejemplos en ngx_postgresla página web).
  • PostgreSQLcomo RDBMS.
  • HTTPprotocolo.
  • nginxes un software ligero.

No especificó el formato de respuesta que desea devolver a los clientes, pero ngx_postgreses compatible con JSON.

RestifyDB ( http://restifydb.com ) es una solución. Es de código abierto y se puede usar de forma gratuita (a menos que necesite parchear, etc., para lo cual hay una versión comercial disponible. Aunque no he usado slash DB ( https://www.slashdb.com/ ) es otra solución que funciona de manera similar.

Sandman2 hace exactamente lo que quieres, en python y se anuncia comoAutomatically generate a RESTful API service for your legacy database. No code required!

Utiliza SQLAlchemy para las interacciones de la base de datos (y es compatible con cualquiera de sus muchas bases de datos compatibles) y ofrece no solo una API REST sino también una interfaz de administración web decente.

Una vez configurado, debería poder emitir consultas como http://$HOST/employees?city=Parisy similares, aunque es posible que no sea compatible http://$HOST/employees?dep_id=4&city=Berlin,Pariscuando solicite varios valores a la vez... ¡Para probar!