queryset queries example cual database django sqlite orm

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.



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 una Query , 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__() de QuerySet acepta una query argumento de palabra clave, que debe ser una instancia de django.db.models.sql.Query . El __init__() de Query , a su vez, acepta una connection 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 un QuerySet 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.