bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


django_mongo

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
django_mongo [2023/06/29 16:25]
david_lozano
django_mongo [2024/06/17 16:57] (actual)
david_lozano [Django amb MongoDB]
Línia 1: Línia 1:
 ====== Django amb MongoDB ====== ====== Django amb MongoDB ======
  
-En aquest article provarem de veure quines opcions tenim per treballar amb Django i la BD basada en documents: MongoDB. La informació està extreta de diversos tutorials, articles i materials multimèdia trobats a motors de cerca fins a la data d'avui (23/06/2023). És probable i desitjable que l'estat del tema tingui variacions a partir d'aquesta data.+En aquest article provarem de veure quines opcions tenim per treballar amb Django i la BD basada en documents: MongoDB. La informació està extreta de diversos tutorials, articles i materials multimèdia trobats a motors de cerca fins a la data d'avui (23-06-2023). És probable i desitjable (com veureu) que hi hagi millores a partir d'aquesta data sobre aquest tema.
  
 Referències: Referències:
Línia 8: Línia 8:
   * PyMongo [[https://pymongo.readthedocs.io/en/stable/tutorial.html|tutorial PyMongo]].   * PyMongo [[https://pymongo.readthedocs.io/en/stable/tutorial.html|tutorial PyMongo]].
   * Article sobre [[https://medium.com/@dennisivy/read-this-before-using-mongodb-with-django-879927ce1ef|les funcionalitats de Djongo]].   * Article sobre [[https://medium.com/@dennisivy/read-this-before-using-mongodb-with-django-879927ce1ef|les funcionalitats de Djongo]].
 +  * [[Django i MongoDB CRUD]]
  
 {{tag> #FpInfor #Dam #DamMp06 #DamMp06Uf02 #DaMMp06Uf3 mongo mongodb django framework python web DevOps }} {{tag> #FpInfor #Dam #DamMp06 #DamMp06Uf02 #DaMMp06Uf3 mongo mongodb django framework python web DevOps }}
Línia 25: Línia 26:
  
   * **Djongo** : Ens permet treballar amb tot el potencial de Django amb MongoDB fent traduccions de les consultes SQL a la sintaxi de MongoDB permetent mantenir el potencial de l'ORM de Django i el seu sistema de models i migracions.   * **Djongo** : Ens permet treballar amb tot el potencial de Django amb MongoDB fent traduccions de les consultes SQL a la sintaxi de MongoDB permetent mantenir el potencial de l'ORM de Django i el seu sistema de models i migracions.
-  * **PyMongo i MongoEngine** : PyMongo és el controlador estàndard mitjançant el qual MongoDB pot interactuar amb Django. És la forma oficial i preferida d'utilitzar MongoDB amb Python. PyMongo proporciona funcionalitat per dur a terme totes les accions de la base de dades com cercar, suprimir, actualitzar i inserir. MongoEngine és una capa ORM a la part superior de PyMongo. L'ús de MongoEngine per connectar Django i MongoDB us ofereix camps com ListField i DictField per gestionar enormes dades JSON no estructurades.+  * **PyMongo** : PyMongo és el controlador estàndard mitjançant el qual MongoDB pot interactuar amb Django. És la forma oficial i preferida d'utilitzar MongoDB amb Python. PyMongo proporciona funcionalitat per dur a terme totes les accions de la base de dades com cercar, suprimir, actualitzar i inserir.
  
 ===== Djongo ===== ===== Djongo =====
-Djongo no fa cap canvi al marc existent de Django ORM, la qual cosa significa que no apareixen errors innecessaris ni vulnerabilitats de seguretat. Simplement tradueix una cadena de consulta SQL a un document de consulta MongoDB . Com a resultat, totes les funcions, models, etc. de Django funcionen tal qual.+Djongo no fa cap canvi al marc existent de Django ORM, la qual cosa significa que no apareixen errors innecessaris ni vulnerabilitats de seguretat. Simplementtradueix una cadena de consulta SQL a un document de consulta MongoDB. Com a resultat, totes les funcions, models, etc. de Django funcionen tal qual.
  
 Si ja tens un projecte amb una base de dades SQL, instal·leu Djongo: Si ja tens un projecte amb una base de dades SQL, instal·leu Djongo:
Línia 75: Línia 76:
 **Djongo encara està en estat de proves**, és incomplet i només mapeja consultes bàsiques sense tenir en compte totes les funcionalitats. Si requeriu alguna cosa més complexa, us haureu d'espavilar vosaltres com a desenvolupadors. **Djongo encara està en estat de proves**, és incomplet i només mapeja consultes bàsiques sense tenir en compte totes les funcionalitats. Si requeriu alguna cosa més complexa, us haureu d'espavilar vosaltres com a desenvolupadors.
  
-**Djongo actualment té molt poc suport** a incidències que s'estàn generant i ara per ara no es compatible a versions del Django superiors a la 3.0.5.+**Djongo actualment té molt poc suport** a incidències que s'estan generant i ara per ara no és compatible a versions del Django superiors a la 3.0.5.
  
 **Djongo converteix les consultes SQL en consultes MongoDB**, cosa que realment no té sentit en una base de dades de documents. No obtindreu cap dels avantatges de MongoDB. I en realitat podria provocar un rendiment baix a MongoDB vs SQL. **Djongo converteix les consultes SQL en consultes MongoDB**, cosa que realment no té sentit en una base de dades de documents. No obtindreu cap dels avantatges de MongoDB. I en realitat podria provocar un rendiment baix a MongoDB vs SQL.
Línia 88: Línia 89:
 PyMongo és el controlador natural per connectar-nos de manera eficient a una base de dades MongoDB. Com que PyMongo està disponible amb PyPI, podeu instal·lar-lo ràpidament mitjançant una comanda pip: PyMongo és el controlador natural per connectar-nos de manera eficient a una base de dades MongoDB. Com que PyMongo està disponible amb PyPI, podeu instal·lar-lo ràpidament mitjançant una comanda pip:
   pip install pymongo[snappy,gssapi,srv,tls]   pip install pymongo[snappy,gssapi,srv,tls]
 +
 +A continuació teniu un exemple de codi per a la connexió i les funcionalitats CRUD bàsiques:
  
 --> Tutorial ràpid CRUD amb PyMongo# --> Tutorial ràpid CRUD amb PyMongo#
 En aquest tutorial ràpid, demostrarem com utilitzar PyMongo per fer operacions CRUD senzilles. Per a això, creem una sessió de PyMongo: En aquest tutorial ràpid, demostrarem com utilitzar PyMongo per fer operacions CRUD senzilles. Per a això, creem una sessió de PyMongo:
  
-<file python.py>+<file python exemple.py> 
 import pymongo import pymongo
 #connect_string = 'mongodb+srv://<username>:<password>@<atlas cluster>/<myFirstDatabase>?retryWrites=true&w=majority'  #connect_string = 'mongodb+srv://<username>:<password>@<atlas cluster>/<myFirstDatabase>?retryWrites=true&w=majority' 
Línia 141: Línia 145:
 \\ \\
  
-===== Exemple Codi Online ===== +Treballant d'aquesta manera si podem aconseguir tota la potència de Mongo, a més podem disposar d'eines com MongoEngineMongoEngine és una capa ORM a la part superior de PyMongo. L'ús de MongoEngine per connectar Django i MongoDB us ofereix camps com ListField i DictField per gestionar enormes dades JSON no estructurades.
-Crearem un projecte Django i provarem si funciona simplement amb: +
-  (env) $ django-admin startproject myproject +
-  (env) $ cd myproject +
-  (env) $ ./manage.py runserver+
  
-I per comprovar-ho accedeix amb el navegador a ''http://localhost:8000''.+Ok, amb això no tindré problemes però:
  
-Si volem endinsar-nos la programació amb Django es recomana seguir l'excel·lent [[https://docs.djangoproject.com/en/stable/intro/tutorial01/|tutorial oficial Django]].+<WRAP important> 
 +**Adeu a l'ORM de Django**, haureu de fer les vostres consultes des de zero, així que oblideu-vos de tot el que sabeu sobre la "manera Django" predeterminada.
  
-\\+**Adeu a aquest Admin tan xulo** treballa fent crides a l'ORM, per tant, veig difícil poder-ho adaptar fàcilment ara per ara.
  
-===== Exemple Wrap important ===== +**Adeu les migracions i la validació dels models automàtica**
-Anem Github (o a Gitlab, Bitbucket, etc.) fem [[Git#crear un nou repositori]]. Si ho feu a la webella mateix ens donarà la "xuleta" de com inicialitzar el nostre projecte i connectar-lo al repo remot.+
  
-<WRAP important> 
-No pugeu res al repositori remot fins que hagueu configurat correctament el projecte amb el ''.gitignore'' com es descriu més avall. 
- 
-En particular, prengueu cura de no fer cap ''git add .'' (afegeix tots els arxius) fins no tenir el ''.gitignore'' a l'arrel. 
 </WRAP> </WRAP>
  
-Teniu articles amb informació extensa sobre el [[VCS|sistema de control de versions]] de [[Git]] en particular.+Tot i en aquestes condicions encara Django és un framework bo per treballar, però no prou per plantejar-te si és la millor opció disponible per treballar amb MongoDB**Quina proposes tu?**
  
-===== Exemple Wrap info =====+===== Exercici proposat ===== 
 +<WRAP todo> 
 +Instal·lat el MongoDB al teu dispositiu i adapta l'exercici del tutorial de Django (Polls) amb la nova base de dades fent servir **Djongo**. 
  
-<WRAP info> +Fes proves de totes les funcionalitats del tutorial: **Models, Admin, Migrations, Fakers**… 
-Podeu llegir referències sobre els potents formularis de Django a [[django_frontend#formularis|Django Formularis]]. +
-</WRAP> +
- +
-===== Exemple Wrap todo ===== +
-<WRAP todo> +
-**Formularis**+
  
-Elabora formularis per: +**Comenta si has tingut algun problema i com el podries resoldre.**
-  - Crear lliga. +
-    Assegura't que si ja hi ha una lliga amb el mateix nom, no ens deixi guardar. +
-    Pots fer-ho amb Form o amb ModelForm. +
-  - Crear equip. +
-  - Assignar equips a una lliga (afegir o treure).+
 </WRAP> </WRAP>
django_mongo.1688055935.txt.gz · Darrera modificació: 2023/06/29 16:25 per david_lozano