Как разработать приложение django, которое извлекает данные из старой базы данных, содержащей огромное количество таблиц?
Я разрабатываю приложение Django, которое получает данные из огромной базы данных, затем выполняет некоторые статистические операции и выводит результат. Существуют различные способы, но я хочу знать, какой способ лучше всего подходит для этого?
Dataset have a lot of tables, so is it advisable to create models for all those tables? and use Django ORM to replicate below query?
OR else I should not use Models at all and use RAW SQL query to fetch the data from database and perform operation and then show the result. If yes then please suggest the best way of doing it.
"USE r_d;
SELECT nus.noyau_utilisateur_id as "candidate_id",
pcon.id as "assessment_id",
pcon.created_at as "assessment_creation_date",
YEAR(pcon.created_at) as "assessment_year",
tti.libelle as "test_name",
tfi.libelle as "factor_name",
pcal.score_reel as "real_score",
pcal.score_brut as "raw_score",
pcal.score_calcule as "calculated_score"
FROM `passation_calcul` pcal
JOIN `passation_contrat` pcon ON pcon.id = pcal.passation_contrat_id
JOIN `noyau_utilisateur_societe` nus ON nus.id = pcon.noyau_utilisateur_societe_id
JOIN `test_test` tt ON tt.id = pcon.test_test_id
JOIN `test_test_i18n` tti ON tt.id = tti.test_test_id
JOIN `test_facteur` tf ON tf.id = pcal.id_ref
JOIN `test_facteur_i18n` tfi ON tf.id = tfi.test_facteur_id
WHERE pcon.test_test_id = 144
AND pcon.etat = "COMPLETED"
AND tti.noyau_ref_langue_produit_id = 1
AND pcal.table_ref = 'test_facteur'
AND tfi.noyau_ref_langue_produit_id = 1
ORDER BY candidate_id, assessment_id, factor_name"```
Я думаю, что после указания параметров базы данных для указания на вашу унаследованную базу данных в settings.py, вы должны выполнить
python manage.py inspectdb
это сгенерирует классы python-моделей существующей таблицы в db. запишите вывод в models.py и проверьте его
Это может помочь. более подробно.
После копирования вывода в models.py. внесите необходимые изменения, если таковые имеются.
python manage.pymakemigrations
Теперь нам нужно выполнить миграцию, которая создаст необходимые таблицы в базе данных в соответствии с моделями в model.py.
Но у нас уже есть эти таблицы... вот тут-то и приходит на помощь поддельная миграция...
python manage.py migrate --fake
Перед началом работы прочитайте это... и поймите, что вы делаете... это позволит вам сделать django orm quries без использования sql. бесшовно. https://docs.djangoproject.com/en/4.0/ref/django-admin/#migrate