Desde que se bifurcó de MySQL en 2009, MariaDB se ha convertido en una de las bases de datos más populares elegidas por los desarrolladores durante la última década. Si bien es probable que muchos tecnólogos hayan gravitado hacia él como una solución debido a sus raíces de código abierto y que está arraigado en el mundo de las bases de datos relacionales, eso realmente solo comienza a arañar la superficie de lo que MariaDB tiene para ofrecer.
No es ningún secreto que, a lo largo de los años, MariaDB ha agregado muchas características y funcionalidades que la han diferenciado de otras soluciones de bases de datos, pero lo que los desarrolladores pueden no saber es que hay dos grupos que contribuyen activamente a la base de código en constante avance; Fundación MariaDB y Corporación MariaDB.
Con eso en mente, he escrito este breve tutorial para proporcionar una plataforma de lanzamiento para que pueda comenzar a usar MariaDB con Docker y Python (con la ayuda de Flask ), en cuestión de minutos, para que pueda comprobarlo por sí mismo.
Antes de saltar al código, deberá asegurarse de tener algunas cosas en su máquina:
Para extraer la imagen del servidor MariaDB y activar un contenedor, simplemente abra una ventana de terminal y ejecute lo siguiente:
$ docker run -p 3306:3306 -d --name mariadb -eMARIADB_ROOT_PASSWORD=Password123! mariadb/server:10.4
El comando anterior activará un contenedor del servidor MariaDB al que puede conectarse y comunicarse mediante el cliente MariaDB .
Si bien ciertamente puede usar una variedad de otros clientes SQL, para mantener las cosas simples y uniformes, solo he incluido ejemplos usando el cliente oficial de MariaDB.
Conéctese a su instancia de MariaDB ejecutando el siguiente comando en una ventana de terminal.
$ mariadb --host 127.0.0.1 -P 3306 --user root -pPassword123!
Debería ver algo como lo siguiente, lo que significa que se ha conectado con éxito a la instancia de MariaDB.
A continuación, cree una nueva base de datos.
CREATE DATABASE demo;
Luego crea una nueva tabla.
CREATE TABLE demo.people ( name VARCHAR ( 50 ));
Finalmente, inserte un par de registros.
INSERT INTO demo.people VALUES ( 'rob' ), ( 'tracy' ), ( 'sam' ), ( 'duke' );
Ahora que ha descargado, instalado y puesto en marcha una base de datos MariaDB (usando Docker), está listo para usarla dentro de una nueva aplicación de Python.
¡Recientemente, MariaDB anunció la disponibilidad de MariaDB Connector/Python beta! Connector/Python permite que los programas de Python accedan a las bases de datos de MariaDB mediante una API que cumple con Python DB API 2.0 (PEP-249).
Los desarrolladores de MariaDB optaron por optimizar el rendimiento del nuevo conector escribiéndolo en C, lo que les permitió aprovechar la biblioteca del cliente MariaDB Connector/C para la comunicación cliente-servidor.
Para usar el nuevo conector MariaDB Python, también deberáinstalar MariaDB Connector/C (v3.1.5+) .
Un entorno virtual es un árbol de directorios que contiene archivos ejecutables de Python y otros archivos que indican que es un entorno virtual. Básicamente, es la columna vertebral para ejecutar su aplicación Python Flask.
La creación de entornos virtuales se realiza ejecutando el siguiente comando:
$ pyvenv venv
Sugerencia: pyvenv solo está disponible en Python 3.4 o posterior. Para versiones anteriores, utilice la herramienta virtualenv .
Antes de que pueda comenzar a instalar o usar paquetes en su entorno virtual, deberá activarlo . La activación de un entorno virtual colocará los ejecutables pip y pip específicos del entorno virtual en la RUTA de su shell.
Active el entorno virtual con el siguiente comando:
$ . venv/bin/activate activate
Flask es un marco micro web escrito en Python. Se clasifica como un microframework porque no requiere herramientas o bibliotecas particulares.
TL; DR (si se me permite hacer eso por dos oraciones), es un marco excelente y liviano para usar para una API.
Primero, instala Flask.
$ pip3 install flask
Luego cree un nuevo archivo llamado api.py que se usará para crear una nueva aplicación Flask , y agrega el siguiente código:
# import necessary packages import flask # create the flask app app = flask.Flask(__name__) app.config[ "DEBUG" ] = True @app.route('/', methods=['GET']) def index () : return 'Success!' # run the app app.run()
Lo que tiene ahora es la base para una API extremadamente simple. Puede probarlo ejecutando la aplicación y probando el punto final.
Para crear una instancia, se le tiene que dar un nombre. El uso de (__name__) garantiza que se puede iniciar como una aplicación o importar como un módulo. El uso del decorador route() le permite a nuestra aplicación de matraz saber qué URL debe activar el método correspondiente.
Estás listo para ejecutar la aplicación.
$ python3 api.py
De forma predeterminada, la aplicación comenzará a ejecutarse en el puerto 5000. Puede probar los resultados solicitando datos de http://localhost:5000 .
Una vez que haya creado una aplicación Flask simple, estará listo para agregar código para integrarlo con MariaDB.
Comience instalando el conector Python de MariaDB.
$ pip3 install mariadb
Abra api.py y agregue código para importar los paquetes MariaDB y JSON directamente en la importación del paquete Flask.
import json import mariadb
A continuación, agregue un objeto de configuración con la información de conexión para su instancia de MariaDB en ejecución.
config = { 'host' : '127.0.0.1' , 'port' : 3306 , 'user' : 'root' , 'password' : 'Password123!' , 'database' : 'demo' }
El objeto de configuración se usará dentro de un nuevo bloque de método de ruta para conectarse a MariaDB.
# route to return all people @app.route('/api/people', methods=['GET']) def index () : # connection for MariaDB conn = mariadb.connect(**config) # create a connection cursor cur = conn.cursor() # execute a SQL statement cur.execute( "select * from people" ) # serialize results into JSON row_headers=[x[ 0 ] for x in cur.description] rv = cur.fetchall() json_data=[] for result in rv: json_data.append(dict(zip(row_headers,result))) # return the results! return json.dumps(json_data)
Reuniéndolo todo, el contenido de su api.py debería tener el siguiente aspecto:
# import the necessary packages import flask import json import mariadb app = flask.Flask(__name__) app.config[ "DEBUG" ] = True # configuration used to connect to MariaDB config = { 'host' : '127.0.0.1' , 'port' : 3306 , 'user' : 'root' , 'password' : 'Password123!' , 'database' : 'demo' } # route to return all people @app.route('/api/people', methods=['GET']) def index () : # connection for MariaDB conn = mariadb.connect(**config) # create a connection cursor cur = conn.cursor() # execute a SQL statement cur.execute( "select * from people" ) # serialize results into JSON row_headers=[x[ 0 ] for x in cur.description] rv = cur.fetchall() json_data=[] for result in rv: json_data.append(dict(zip(row_headers,result))) # return the results! return json.dumps(json_data) app.run()
Inicie la aplicación.
$ python3 api.py
Luego pruebe el punto final de personas . Esto se puede hacer a través de una variedad de técnicas (por ejemplo, directamente dentro de un navegador, Postman , etc.).
Por ejemplo, considerando usar un comando curl :
$ curl http://localhost:5000/api/people
Lo que produce la siguiente carga útil de respuesta JSON:
[{ "name" : "rob" },{ "name" : "tracy" },{ "name" : "duke" },{ "name" : "sam" }]
Esperamos que este breve tutorial lo haya ayudado a comenzar a usar MariaDB con Docker, Python y Flask. Y, sí, este fue un ejemplo muy simple, ¡pero solo se vuelve más emocionante a partir de aquí!
Le recomiendo que revise todo lo que MariaDB tiene para ofrecer y cómo puede usar una base de datos verdaderamente innovadora para crear aplicaciones modernas.