diff --git a/30-days-of-python/27_Python_con_MongoDB/01_proof_conection_mongo.py b/30-days-of-python/27_Python_con_MongoDB/01_proof_conection_mongo.py new file mode 100644 index 0000000..b353340 --- /dev/null +++ b/30-days-of-python/27_Python_con_MongoDB/01_proof_conection_mongo.py @@ -0,0 +1,29 @@ +""" +Conection +""" + +from pymongo.mongo_client import MongoClient +from pymongo.server_api import ServerApi +import os +from dotenv import load_dotenv + +load_dotenv() +# variables .env +mongopass = os.getenv('mongopass') +mongouser = os.getenv('mongouser') +mongoname = os.getenv('mongoname') + +uri = "mongodb+srv://" + \ + mongouser + ":" + \ + mongopass + "@" + \ + mongoname + ".m697hfm.mongodb.net/?retryWrites=true&w=majority" + +# Create a new client and connect to the server +client = MongoClient(uri, server_api=ServerApi('1')) + +# Send a ping to confirm a successful connection +try: + client.admin.command('ping') + print("Se envió un ping a su deploy. ¡Se ha conectado correctamente a MongoDB!") +except Exception as e: + print(e) diff --git a/30-days-of-python/27_Python_con_MongoDB/02_connect_flask_app.py b/30-days-of-python/27_Python_con_MongoDB/02_connect_flask_app.py new file mode 100644 index 0000000..6f8ae99 --- /dev/null +++ b/30-days-of-python/27_Python_con_MongoDB/02_connect_flask_app.py @@ -0,0 +1,30 @@ +""" +Conectar la aplicación flask a la base de datos MongoDB +""" + +from pymongo.mongo_client import MongoClient +from pymongo.server_api import ServerApi +from flask import Flask, render_template +import os +from dotenv import load_dotenv + +load_dotenv() +# variables .env +mongopass = os.getenv('mongopass') +mongouser = os.getenv('mongouser') +mongoname = os.getenv('mongoname') + +uri = "mongodb+srv://" + \ + mongouser + ":" + \ + mongopass + "@" + \ + mongoname + ".m697hfm.mongodb.net/?retryWrites=true&w=majority" + + +client = MongoClient(uri, server_api=ServerApi('1')) + +print(client.list_database_names()) + +app = Flask(__name__) +if __name__ == '__main__': + port = int(os.environ.get("PORT", 5000)) + app.run(debug=True, host='0.0.0.0', port=port) diff --git a/30-days-of-python/27_Python_con_MongoDB/03_create_db_collection.py b/30-days-of-python/27_Python_con_MongoDB/03_create_db_collection.py new file mode 100644 index 0000000..a8f6fed --- /dev/null +++ b/30-days-of-python/27_Python_con_MongoDB/03_create_db_collection.py @@ -0,0 +1,40 @@ +""" +Crear una base de datos y una colección +""" + +from pymongo.mongo_client import MongoClient +from pymongo.server_api import ServerApi +from flask import Flask, render_template +import os +from dotenv import load_dotenv + +load_dotenv() +# variables .env +mongopass = os.getenv('mongopass') +mongouser = os.getenv('mongouser') +mongoname = os.getenv('mongoname') + +uri = "mongodb+srv://" + \ + mongouser + ":" + \ + mongopass + "@" + \ + mongoname + ".m697hfm.mongodb.net/?retryWrites=true&w=majority" + +client = MongoClient(uri, server_api=ServerApi('1')) + +# Creating database +db = client.pruebas_mongodb + +# Creating students collection and inserting a document +db.students.insert_one({ + 'name': 'manuel', + 'country': 'Angola', + 'city': 'Soria', + 'age': 40 +}) + +print(client.list_database_names()) + +app = Flask(__name__) +if __name__ == '__main__': + port = int(os.environ.get("PORT", 5000)) + app.run(debug=True, host='0.0.0.0', port=port) diff --git a/30-days-of-python/27_Python_con_MongoDB/04_Insert_many_docs_collection.py b/30-days-of-python/27_Python_con_MongoDB/04_Insert_many_docs_collection.py new file mode 100644 index 0000000..49e4413 --- /dev/null +++ b/30-days-of-python/27_Python_con_MongoDB/04_Insert_many_docs_collection.py @@ -0,0 +1,41 @@ +""" +Insertar varios documentos en una colección +""" + +from pymongo.mongo_client import MongoClient +from pymongo.server_api import ServerApi +from flask import Flask, render_template +import os +from dotenv import load_dotenv + +load_dotenv() +# variables .env +mongopass = os.getenv('mongopass') +mongouser = os.getenv('mongouser') +mongoname = os.getenv('mongoname') + +uri = "mongodb+srv://" + \ + mongouser + ":" + \ + mongopass + "@" + \ + mongoname + ".m697hfm.mongodb.net/?retryWrites=true&w=majority" + +client = MongoClient(uri, server_api=ServerApi('1')) + +db = client.pruebas_mongodb + +students = [ + {'name': 'David', 'country': 'UK', 'city': 'London', 'age': 34}, + {'name': 'John', 'country': 'Sweden', 'city': 'Stockholm', 'age': 28}, + {'name': 'Sami', 'country': 'Finland', 'city': 'Helsinki', 'age': 25}, +] + +for student in students: + db.students.insert_one(student) + + +app = Flask(__name__) +if __name__ == '__main__': + # for deployment we use the environ + # to make it work for both production and development + port = int(os.environ.get("PORT", 5000)) + app.run(debug=True, host='0.0.0.0', port=port) diff --git a/30-days-of-python/27_Python_con_MongoDB/05_find.py b/30-days-of-python/27_Python_con_MongoDB/05_find.py new file mode 100644 index 0000000..9d516b5 --- /dev/null +++ b/30-days-of-python/27_Python_con_MongoDB/05_find.py @@ -0,0 +1,55 @@ +""" +Buscar en la base de datos +""" + +from pymongo.mongo_client import MongoClient +from pymongo.server_api import ServerApi +from flask import Flask, render_template +import os +from dotenv import load_dotenv +from bson.objectid import ObjectId + +load_dotenv() +# variables .env +mongopass = os.getenv('mongopass') +mongouser = os.getenv('mongouser') +mongoname = os.getenv('mongoname') + +uri = "mongodb+srv://" + \ + mongouser + ":" + \ + mongopass + "@" + \ + mongoname + ".m697hfm.mongodb.net/?retryWrites=true&w=majority" + +client = MongoClient(uri, server_api=ServerApi('1')) + +db = client.pruebas_mongodb + +student = db.students.find_one({'name': 'David'}) +print(student) + +print("-"*30) + +student_two = db.students.find_one( + {'_id': ObjectId('652472bfccdbb81a3f7473e5')}) +print(student_two) + +print("-"*30) + +students = db.students.find() +for student in students: + print(student) + +print("-"*30) + +students = db.students.find({}, {"_id": 0, "name": 1, "country": 1}) +for student in students: + print(student) + +print("-"*30) + +app = Flask(__name__) +if __name__ == '__main__': + # for deployment we use the environ + # to make it work for both production and development + port = int(os.environ.get("PORT", 5000)) + app.run(debug=True, host='0.0.0.0', port=port) diff --git a/30-days-of-python/27_Python_con_MongoDB/06_find_query.py b/30-days-of-python/27_Python_con_MongoDB/06_find_query.py new file mode 100644 index 0000000..6ba6a23 --- /dev/null +++ b/30-days-of-python/27_Python_con_MongoDB/06_find_query.py @@ -0,0 +1,70 @@ +""" +Buscar en la base de datos con query +""" + +from pymongo.mongo_client import MongoClient +from pymongo.server_api import ServerApi +from flask import Flask, render_template +import os +from dotenv import load_dotenv +from bson.objectid import ObjectId + +load_dotenv() +# variables .env +mongopass = os.getenv('mongopass') +mongouser = os.getenv('mongouser') +mongoname = os.getenv('mongoname') + +uri = "mongodb+srv://" + \ + mongouser + ":" + \ + mongopass + "@" + \ + mongoname + ".m697hfm.mongodb.net/?retryWrites=true&w=majority" + +client = MongoClient(uri, server_api=ServerApi('1')) + +db = client.pruebas_mongodb + +query = { + "country": "Finland" +} +students = db.students.find(query) + +for student in students: + print(student) + + +print("-"*30) + +query = { + "city": "Helsinki" +} +students = db.students.find(query) +for student in students: + print(student) + + +print("-"*30) + +query = { + "country": "Finland", + "city": "Helsinki" +} +students = db.students.find(query) +for student in students: + print(student) + + +print("-"*30) + +query = {"age": {"$gt": 30}} +students = db.students.find(query) +for student in students: + print(student) + + +app = Flask(__name__) +if __name__ == '__main__': + # for deployment we use the environ + # to make it work for both production and development + port = int(os.environ.get("PORT", 5000)) + app.run(debug=True, host='0.0.0.0', port=port) diff --git a/30-days-of-python/27_Python_con_MongoDB/07_find_more_opcions.py b/30-days-of-python/27_Python_con_MongoDB/07_find_more_opcions.py new file mode 100644 index 0000000..4fb9aca --- /dev/null +++ b/30-days-of-python/27_Python_con_MongoDB/07_find_more_opcions.py @@ -0,0 +1,71 @@ +""" +Buscar en la base de datos - más opciones +""" + +from pymongo.mongo_client import MongoClient +from pymongo.server_api import ServerApi +from flask import Flask, render_template +import os +from dotenv import load_dotenv +from bson.objectid import ObjectId + +load_dotenv() +# variables .env +mongopass = os.getenv('mongopass') +mongouser = os.getenv('mongouser') +mongoname = os.getenv('mongoname') + +uri = "mongodb+srv://" + \ + mongouser + ":" + \ + mongopass + "@" + \ + mongoname + ".m697hfm.mongodb.net/?retryWrites=true&w=majority" + +client = MongoClient(uri, server_api=ServerApi('1')) + +db = client.pruebas_mongodb + +db.students.find().limit(3) + +print("-"*30) + +students = db.students.find().sort('name') +for student in students: + print(student) + +print("-"*30) + +students = db.students.find().sort('name', -1) +for student in students: + print(student) + +print("-"*30) + +students = db.students.find().sort('age') +for student in students: + print(student) + +print("-"*30) + +students = db.students.find().sort('age', -1) +for student in students: + print(student) + +print("-"*30) + +# New value + +query = {'age': 40} +new_value = {'$set': {'age': 38}} + +db.students.update_one(query, new_value) +# lets check the result if the age is modified +for student in db.students.find(): + print(student) + + +app = Flask(__name__) +if __name__ == '__main__': + # for deployment we use the environ + # to make it work for both production and development + port = int(os.environ.get("PORT", 5000)) + app.run(debug=True, host='0.0.0.0', port=port) diff --git a/30-days-of-python/27_Python_con_MongoDB/08_delete_doc.py b/30-days-of-python/27_Python_con_MongoDB/08_delete_doc.py new file mode 100644 index 0000000..3abe800 --- /dev/null +++ b/30-days-of-python/27_Python_con_MongoDB/08_delete_doc.py @@ -0,0 +1,46 @@ +""" +Buscar en la base de datos con query +""" + +from pymongo.mongo_client import MongoClient +from pymongo.server_api import ServerApi +from flask import Flask, render_template +import os +from dotenv import load_dotenv +from bson.objectid import ObjectId + +load_dotenv() +# variables .env +mongopass = os.getenv('mongopass') +mongouser = os.getenv('mongouser') +mongoname = os.getenv('mongoname') + +uri = "mongodb+srv://" + \ + mongouser + ":" + \ + mongopass + "@" + \ + mongoname + ".m697hfm.mongodb.net/?retryWrites=true&w=majority" + +client = MongoClient(uri, server_api=ServerApi('1')) + +db = client.pruebas_mongodb + +# Delete one document +query = {'name': 'John'} +db.students.delete_one(query) + +# Delete many documents +for student in db.students.find(): + print(student) + +for student in db.students.find(): + print(student) + +# Drop collection +db.students.drop() + +app = Flask(__name__) +if __name__ == '__main__': + # for deployment we use the environ + # to make it work for both production and development + port = int(os.environ.get("PORT", 5000)) + app.run(debug=True, host='0.0.0.0', port=port) diff --git a/30-days-of-python/27_Python_con_MongoDB/README.md b/30-days-of-python/27_Python_con_MongoDB/README.md index 4c45ff7..e19bbb3 100644 --- a/30-days-of-python/27_Python_con_MongoDB/README.md +++ b/30-days-of-python/27_Python_con_MongoDB/README.md @@ -6,4 +6,15 @@ Documento original en inglés: [Python with MondoDB](https://github.com/Asabeneh Repasar [ejemplos](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/27_Day_Python_with_mongodb/27_python_with_mongodb.md) +### Solución + +[01_proof_conection_mongo.py](01_proof_conection_mongo.py) +[02_connect_flask_app.py](02_connect_flask_app.py) +[03_create_db_collection.py](03_create_db_collection.py) +[04_Insert_many_docs_collection.py](04_Insert_many_docs_collection.py) +[05_find.py](05_find.py) +[06_find_query.py](06_find_query.py) +[07_find_more_opcions.py](07_find_more_opcions.py) +[08_delete_doc.py](08_delete_doc.py) + [<< Day 26](../26_Desarrollo_web_en_Python/README.md) | [Day 28 >>](../28_API/README.md)