Pregunta

En mi trabajo actual, usamos iBATIS a través de Java para CRUDar nuestras bases de datos.Me gustan las cualidades abstractas de la herramienta, especialmente cuando trabajo con bases de datos heredadas, ya que no te impone su propia sintaxis.

Estoy buscando un análogo de Python para esta biblioteca., ya que el sitio web sólo tiene versiones Java/.NET/Ruby disponibles.No quiero tener que cambiarme a Jython si no es necesario.

¿Existen otros proyectos similares a la funcionalidad iBATIS para Python?

¿Fue útil?

Solución

iBatis secuestra el DML de SQL (o las definiciones de SQL) en un archivo XML.Se centra específicamente en el mapeo entre SQL y algún modelo de objetos definido en otro lugar.

SQL Alchemy puede hacer esto, pero en realidad no es una solución muy completa.Al igual que iBatis, simplemente puede tener definiciones de tablas SQL y un mapeo entre las tablas y las definiciones de clases de Python.

Lo que es más completo es tener una definición de clase que sea también la definición de la base de datos SQL.Si la definición de clase genera el DDL de la tabla SQL así como el DML de consulta y procesamiento, eso es mucho más completo.

Cambio entre SQLAlchemy y Django ORM.SQLAlchemy se puede utilizar de forma similar a iBatis.Pero prefiero hacer que el diseño de objetos sea central y dejar que la implementación de SQL se derive de los objetos mediante el conjunto de herramientas.

Utilizo SQLAlchemy para proyectos grandes, por lotes e independientes.Las cargas de bases de datos, las conversiones de esquemas, los informes DW y similares funcionan bien.En estos proyectos, la atención se centra en la vista relacional de los datos, no en el modelo de objetos.El SQL que se genera se puede mover a procedimientos almacenados PL/SQL, por ejemplo.

Utilizo Django para aplicaciones web, explotando sus capacidades ORM integradas.Puedes, con un poco de trabajo, segregar el ORM de Django del resto del entorno de Django.Puede proporcionar configuraciones globales para vincular su aplicación a una base de datos específica sin usar un módulo de configuración separado.

Django incluye una serie de relaciones comunes (clave externa, muchos a muchos, uno a uno) para las cuales puede gestionar la implementación de SQL.Genera definiciones de claves e índices para la base de datos adjunta.

Si su problema está principalmente orientado a objetos, y la base de datos se utiliza para la persistencia, entonces la capa ORM casi transparente de Django tiene ventajas.

Si su problema es en gran medida relacional, con la central de procesamiento de SQL, entonces la capacidad de ver el SQL generado en SQLAlchemy tiene ventajas.

Otros consejos

Quizás el soporte de expresiones SQL de SQLAlchemy sea adecuado.Ver el documentación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top