Cómo conectar su aplicación Flask con CouchDB: una base de datos NoSQL

Conectar Flask con bases de datos SQL como PostgreSQL y SQLite es muy sencillo. Pero el marco también se sincroniza perfectamente con bases de datos NoSQL como CouchDB. Y como beneficio adicional, puede consultar sus datos fácilmente cuando usa CouchDB con Flask.

¿Está listo para hacer un cambio usando un NoSQL como CouchDB con su aplicación Flask? Aquí se explica cómo configurar CouchDB en su máquina local y conectarlo con Flask.

¿Qué es CouchDB?

CouchDB es una base de datos NoSQL actualmente propiedad de Apache Software Foundation. Escrito con Erlang, el software se lanzó por primera vez en 2005.

A diferencia de las bases de datos regulares vinculadas a tablas a las que probablemente esté acostumbrado, CouchDB es un sistema de administración de bases de datos no relacionales que almacena datos como JSON sin procesar.

CouchDB no bloquea, por lo que no bloquea la base de datos durante la entrada de datos. Uno de los puntos fuertes de CouchDB es que utiliza una política de control de concurrencia de múltiples versiones para leer y escribir datos. Por lo tanto, permite entradas simultáneas de múltiples usuarios sin interferencia de la estructura existente de los datos en la base de datos.

Por lo tanto, CouchDB es rápido durante las consultas y fácil de trabajar mientras se utilizan métodos asincrónicos. Dicho esto, esto no lo hace mejor que su contraparte SQL. Cada tecnología tiene sus pros y sus contras.

Configuración de CouchDB

Para comenzar a usar CouchDB, descargue e instale una versión compatible del sitio web oficial de CouchDB .

Y si esa última versión no le funciona, vaya al archivo de CouchDB y descargue la versión 1.6.1, que es una versión anterior de CouchDB.

Una vez que instale CouchDB, ejecútelo en su PC como lo haría con cualquier otra aplicación de escritorio.

Abra su navegador. Luego, inicie el servidor de CouchDB pegando lo siguiente en su barra de direcciones:

 http://localhost:5984/_utils/index.html

Configurar Python y Flask

Sin embargo, este tutorial asume que ya tiene Python instalado en su PC. De lo contrario, vaya a python.org e instale la última versión de Python en su PC.

Una vez que haya configurado CouchDB, cree una carpeta raíz del proyecto. Luego abra su línea de comando a ese directorio y cree un entorno virtual de Python .

Instale la última versión de Flask en el espacio virtual usando pip :

 pip install flask

Conecte el matraz con CouchDB

Para comenzar a usar CouchDB con su aplicación Flask, instale Flask-CouchDB , el paquete de tiempo de ejecución para conectar la base de datos con Flask.

Para hacer esto:

 pip install Flask-CouchDB

Una vez que instale Flask-CouchDB correctamente, cree un archivo app.py en esa carpeta raíz. De manera similar, cree un archivo database.py , que se encarga de la creación de su base de datos.

Abra database.py e importe los siguientes paquetes:

 from couchdb import Server

A continuación, cree su base de datos en ese mismo archivo usando el siguiente bloque de código:

 from couchdb import Server
server = Server()
db = server.create('muocouch')

Ejecute database.py a través de la CLI. Luego abra o actualice el servidor local de CouchDB a través de su navegador como lo hizo anteriormente. Ahora debería ver la base de datos ( muocouch en este caso) listada en CouchDB.

Relacionado: Cómo ejecutar un script de Python

Nota: asegúrese de utilizar una convención de nomenclatura en minúsculas para las bases de datos, ya que CouchDB podría no aceptar mayúsculas o minúsculas.

Almacene sus primeros datos de CouchDB usando Flask

En última instancia, el propósito de cualquier base de datos es el almacenamiento de datos. Una vez que tenga una base de datos en CouchDB, puede comenzar a almacenar datos en ella desde su aplicación Flask de inmediato.

Para comenzar, abra app.py e importe los siguientes paquetes:

 from flask import Flask
from couchdb import Server
from flaskext.couchdb import Document

A continuación, cree una aplicación Flask y una instancia de servidor CouchDB:

 app = Flask(__name__, static_url_path='/static')
app.debug=True
server = Server()

Ahora, almacenemos algunas entradas de usuario en CouchDB:

 @app.route('/', methods=['GET', 'POST'])
def register():
user = {
"username":"media site",
"email":"[email protected]",
"password":"encrypteddata"
}
db = server['muocouch'] #select the database
doc_id, doc_rev = db.save(user) #store your data in th database
return "<h2>Your data should now be in the database</h2>"

Si lo desea, puede configurar su servidor Flask en el modo de desarrollo antes de ejecutarlo.

Para hacer esto, ejecute el siguiente comando a través de su CLI:

 set FLASK_ENV=development

Tenga en cuenta que la configuración del modo de servidor es opcional. Solo hace que la depuración de su código sea sencilla.

Pero independientemente de la configuración del modo de servidor, aquí se explica cómo iniciar el servidor Flask a través de CMD:

 flask run

Flask, sin embargo, establece el puerto de forma predeterminada en localhost: 5000 . Ahora debería ver el mensaje en la etiqueta H2 una vez que cargue esta dirección a través de su navegador.

Validar datos y verificar duplicados mediante consultas de CouchDB

Para estandarizar aún más esto, puede utilizar consultas para validar las entradas y evitar duplicados en su base de datos. Consultar CouchDB es un poco diferente de cómo se hace con bases de datos SQL.

CouchDB usa lo que llama "vistas de JavaScript" para consultar datos de la base de datos. Afortunadamente, esto es relativamente sencillo.

Antes de continuar, así es como se ve una vista de consulta básica de CouchDB:

 map_func = '''function(doc)
{ emit(doc.doc_rev, doc); }'''
myQuery = [docType].query(db, map_func, reduce_fun=None)

Ahora usemos el código anterior de manera práctica:

 #Create a document object model called " Users :"
class User(Document):
doc_type = 'User'
@app.route('/', methods=['GET', 'POST'])
def register():
user = {
"username":"media site",
"email":"[email protected]",
"password":"encrypteddata"
}
db = server['muocouch'] #select the database
# Use the view function to fetch your data from CouchDB
map_func = '''function(doc)
{ emit(doc.doc_rev, doc); }'''
# Get all the data by running a query set
myQuery = User.query(db, map_func, reduce_fun=None, reverse=True)
q = [i['username'] for i in myQuery] # Loop out all the usernames from the database
q2 = [i['email'] for i in myQuery] # Loop out all the email addresses from the database
q3 = q+q2 # Merge both queries into a single list
print(q3)
return "<h2>Your data is now in the database</h2>"

El código anterior usa la clase User para consultar los datos obtenidos por la función de vista. Preste mucha atención a los parámetros dentro del conjunto de consultas ( myQuery ).

La impresión de q3 , como hizo anteriormente, ahora debería generar todos los nombres de usuario y direcciones de correo electrónico en la base de datos dentro de la línea de comando.

Entonces, así es como puede usar esta consulta para validar las entradas de los usuarios:

 if not (user['username'] in q3 or user['email'] in q3):
#store your data into the database if itdoesn't exist
doc_id, doc_rev = db.save(user)
return "<h2>Registered successfully</h2>"
else:
return "<h2>Username or email exists</h2>"

Actualizar su navegador devuelve la declaración else cada vez que intenta ingresar un nombre de usuario o un correo electrónico que ya está en la base de datos. Y si está ingresando uno nuevo, almacena con éxito sus datos ejecutando la condición if .

Relacionado: Cómo usar la declaración if de Python

¡Eso es! Acaba de crear su primera base de datos NoSQL usando Flask-CouchDB.

Aunque la creación y consulta de bases de datos en CouchDB gira en torno a los ejemplos que destacamos aquí, puede explorar más las funcionalidades de Flask. Por ejemplo, puede girar campos de entrada usando wtforms y marcar duplicados usando el mensaje flash de Flask.

Incluso puede pasar su consulta a jQuery de JavaScript para validar las entradas y verificar los duplicados de forma asincrónica.

¿CouchDB es mejor que las bases de datos SQL?

El uso de CouchDB o cualquier otra base de datos NoSQL con Flask o cualquier otra tecnología de programación depende de sus preferencias. Pero resulta útil cuando se trata de datos sin estructura y medios sin procesar.

Dicho esto, antes de decidirse, es posible que desee observar las diferencias entre las bases de datos NoSQL y SQL para ayudarlo a decidir cuál de ellas es adecuada para su proyecto.