Esta es la estructura de mi proyecto.
Puedo acceder a la base de datos SQLite predeterminada db.sqlite3 creada por Django, importando los modelos directamente dentro de mis archivos de vistas
Me gusta - from basic.models import table1
Ahora, tengo otra base de datos llamada UTF.db que fue creada por otra persona, y quiero acceder a sus datos y realizar operaciones normales de QuerySet en los datos recuperados.
El problema es que no sé cómo importar las tablas dentro de esa base de datos, ya que no están dentro de ningún archivo modelo dentro de mi proyecto, ya que lo creó otra persona.
Intenté agregar las tablas dentro de la base de datos UTF.db a un archivo models.py agregándolo primero al archivo settings.py como el siguiente
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', }, 'otherdb':{ 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'UTF.db', } } Y luego usando el comando inspectdb para agregar las tablas a un archivo models.py existente
El comando que probé: python manage.py inspectdb > models.py
Pero eso solo hace que mi archivo models.py se vacíe
¿Alguien sabe cómo se puede solucionar esto?
Al final, deseo importar los datos de la tabla dentro de mis archivos de vistas importando el modelo respectivo
Puede especificar una base de datos específica como se especifica en Documentación
python manage.py inspectdb --database=otherdb > your_app/models.pyAdemás, si es posible, es mejor poner otherdb en una aplicación diferente.
Puede adjuntar la segunda base de datos a la primera y usarla desde la primera. Puede usar tablas de ambas bases de datos en una sola consulta SQL. Aquí está el documento https://www.sqlite.org/lang_attach.html .
attach database '/path/to/dbfile.sqlite' as db_remote; select * from some_table join db_remote.remote_table on .... detach database db_remote;La respuesta de @sevdimali funciona bien para crear los nuevos modelos a partir de una base de datos existente
Una vez hecho esto, debe usar el comando:
python manage.py makemigrations
Para agregar los cambios a la carpeta de migraciones
Luego usa el comando
python manage.py migrate --fake-initial
Para agregar los nuevos cambios a su base de datos
Nota : use --fake-initial para ignorar las tablas ya creadas mientras agrega sus nuevas tablas (para que no se vuelvan a crear)
Si no hay modelos preexistentes, puede usar
python manage.py migrate
Como lo haces normalmente
Ahora, mientras importa el modelo de base de datos dentro de su vista, puede escribir
from Appname.models import Tablename
Donde Appname es la aplicación en la que agregó sus nuevos modelos
Y para acceder a sus datos
qs=Tablename.objects.using('otherdb').all()
Nota : otherdb es el nombre de la base de datos externa especificada en el archivo settings.py
¡Ahora puede acceder a todos sus datos de manera similar!