Add exercises 27
Signed-off-by: Manuel Vergara <manuel@vergaracarmona.es>
This commit is contained in:
parent
6fb5471334
commit
a0d26af9ed
@ -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)
|
@ -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)
|
@ -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)
|
@ -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)
|
55
30-days-of-python/27_Python_con_MongoDB/05_find.py
Normal file
55
30-days-of-python/27_Python_con_MongoDB/05_find.py
Normal file
@ -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)
|
70
30-days-of-python/27_Python_con_MongoDB/06_find_query.py
Normal file
70
30-days-of-python/27_Python_con_MongoDB/06_find_query.py
Normal file
@ -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)
|
@ -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)
|
46
30-days-of-python/27_Python_con_MongoDB/08_delete_doc.py
Normal file
46
30-days-of-python/27_Python_con_MongoDB/08_delete_doc.py
Normal file
@ -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)
|
@ -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)
|
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)
|
[<< Day 26](../26_Desarrollo_web_en_Python/README.md) | [Day 28 >>](../28_API/README.md)
|
||||||
|
Loading…
Reference in New Issue
Block a user