database - queries - filter django
¿Es posible tener bases de datos SQLite separadas dentro del mismo proyecto de Django? (4)
Actualmente no, cada proyecto usa una base de datos y cada aplicación debe existir dentro de ella. Si desea tener una base de datos específica de la aplicación, no puede hacerlo a través de Django ORM. Consulte la página wiki de Django en Soporte de múltiples bases de datos .
Estaba considerando crear una base de datos SQLite separada para ciertas aplicaciones en un proyecto de Django.
Sin embargo, no quería usar acceso directo a SQLite si es posible. El acceso ORM al estilo Django a estas bases de datos sería ideal.
es posible?
Gracias.
Esto aún no es posible, pero se habla de ello en la wiki, Soporte de múltiples bases de datos en Django . También se planteó durante la conferencia magistral sobre el futuro de Django en DjangoCon 2008 y se convirtió en uno de los temas de mayor prioridad.
Sí, la API de bajo nivel para esto está en su lugar, solo falta una API conveniente de alto nivel en este momento. Estas citas son de James Bennett (administrador de lanzamiento de Django) sobre la programación de reddit :
Ha estado allí, en una API de muy bajo nivel para quienes miran la base de código, desde hace meses (cada
QuerySet
está respaldado por unaQuery
, que a su vez acepta una conexión de base de datos como argumento). No hay ninguna API documentada de alto nivel para ello, pero conozco a personas que ya están haciendo y que han estado haciendo cosas como escenarios de DB múltiple / fragmentación.... no es necesariamente algo que necesite una gran crítica; el
__init__()
deQuerySet
acepta unaquery
argumento de palabra clave, que debe ser una instancia dedjango.db.models.sql.Query
. El__init__()
deQuery
, a su vez, acepta unaconnection
argumento de palabra clave, que debe ser una instancia de (una subclase específica de back-end para su base de datos de)django.db.backends.BaseDatabaseWrapper
.A partir de ahí, es bastante fácil; podría, por ejemplo, anular
get_query_set()
en un administrador para devolver siempre unQuerySet
usando la conexión que desea, o configurar cosas como fragmentar la lógica para descubrir qué base de datos usar en función de los parámetros de consulta entrantes, etc., etc.
Ya es compatible con http://docs.djangoproject.com/en/dev/topics/db/multi-db/