2012-06-01 7 views
6

Tengo dos aplicaciones que ambas acceden a la misma base de datos. El primero tiene clientes que se conectan a través de TCP y escriben en el DB usando SQLAlchemy. El segundo es una aplicación web más típica usando Django. Ambos tienen requisitos de lectura/escritura.Usar SQLAlchemy y Django ORM en la misma base de datos

me gustaría unificar la capa de acceso a base de datos, pero elegir simplemente SQLAlchemy o simplemente Django es poco atractivo debido a que:

  1. me gustaría usar Django autenticación, permisos, y plugins puede que terceros, que requieren la Django ORM (corrígeme si me equivoco).
  2. Para la primera aplicación, usar SQLAlchemy (hasta ahora) es mucho más simple que tratar de usar el ORM de Django fuera de una aplicación de Django: es una aplicación de servidor TCP/IP, no una aplicación HTTP/web.

¿Hay algún problema al mezclar estos dos ORM en la misma base de datos?

¿En qué sistema (Django, SQLA) debo crear los modelos, vs usando algún tipo de introspección como Django inspectdb?

+0

Acabo de encontrar el proyecto [django-sqlalchemy] (https://code.google.com/p/django-sqlalchemy/wiki/Roadmap). No sé si se adapta a sus necesidades, pero definitivamente vale la pena leer sobre ello. – noisy

Respuesta

6

En primer lugar, no es muy difícil usar Django ORM fuera de manage.py, WSGI manejadores y otras cosas relacionadas con HTTP. Puede usar cualquier script de python, pero necesita alguna inicialización (example).

En segundo lugar - SQLA es una herramienta muy poderosa y es capaz de hacer cosas que es muy difícil de lograr en Django ORM (como polimorfismo genuino y consultas polimórficas). Si tuviera que elegir, personalmente elegiría utilizar Django ORM como una plataforma para crear modelos, luego los mapearé manualmente en SQLA ya que es mucho más flexible y espero que pueda adoptar. Lo cual puede no funcionar en el caso opuesto.

Finalmente, como puede usar Django ORM en ambos lados, y solo tiene que usar un Django ORM debido a los complementos, sugiero que abandone el SQLA. Es una herramienta poderosa, pero también bastante complicada. Tener dos ORM diferentes operando en una base de datos puede provocar problemas inesperados en el futuro y aumenta la complejidad de su aplicación, por lo que será más difícil realizar el mantenimiento.

+1

Gracias. Tomaré su consejo y abandonaré SQLA. – user1431368

Cuestiones relacionadas