flask database handling how use flask with database
En este tutorial de base de datos de Flask, aprenda a usar Flask con varias bases de datos, como Flask MySQL, Flask MongoDB, SQLite, etc.
Ampliaremos los conceptos cubiertos en nuestro primer tutorial de Flask Python. Comenzamos usando Flask con MongoDB, una base de datos NoSQL basada en documentos, donde NoSQL significa Not Only SQL.
Primero, cubrimos el concepto de conectarse con la base de datos y luego le informamos cómo no quedar bloqueado con una base de datos. Si es necesario, podemos modificar solo las configuraciones para cambiar el backend de la base de datos.
=> Consulte la guía de entrenamiento de Perfect Flask aquí
Lo que vas a aprender:
Tutorial de base de datos de matraces
En este tutorial, los lectores pueden hacer una comparación entre las bases de datos discutidas. Además, hablamos de Flask-MongoEngine, Flask-SQLAlchemy y Flask MongoAlchemy. Estos dos ORM, es decir, Object Relation Mapper, son bastante populares.
Los ORM bajo el capó traducen de manera transparente los objetos (modelos de base de datos) en comandos de base de datos o declaraciones SQL.
Los beneficios de usar un ORM se enumeran a continuación:
- Los desarrolladores pueden trabajar con objetos en lugar de tablas y SQL.
- Utilice Migraciones para realizar un seguimiento de las actualizaciones de la base de datos.
- Reduce los costes y el tiempo de desarrollo.
- Supera las diferencias de SQL específicas de la base de datos.
Cuando se utilizan ORM, los programadores no tienen que escribir consultas ni comandos SQL complejos para ejecutar comandos SQL básicos.
Conectarse a la base de datos
Abra el archivo de configuración y observe los valores mencionados a continuación. Flask-Appbuilder toma los detalles de la base de datos en la cadena de conexión de los valores mencionados.
|_+_|Todas las funciones de bajo nivel de la administración de bases de datos por parte del ORM se han incluido en los comandos Flask Click, que podemos ver usando flask fab –help en la línea de comandos.
Matraz MongoDB
En esta sección, aprenderemos cómo usar ORM en lugar de usar scripts SQL sin procesar para trabajar con bases de datos en Flask.
cuáles son los diferentes tipos de pruebas
MongoDB es una base de datos no relacional basada en documentos. Ya lo hemos configurado con nuestra aplicación de ejemplo de tutorial de matraces actual.
Utilice los siguientes comandos para administrar el servidor MongoDB en la máquina local.
|_+_|Hemos hablado de dos ORM famosos que puede utilizar con MongoDB y Flask.
Usando un diseñador de base de datos, creamos dos tablas llamadas Álbum y Canción y definimos una relación de uno a varios entre Álbum y Canción. A continuación se muestra la imagen que representa lo mismo.

Matraz MongoEngine
Ahora creemos nuestro primer modelo de base de datos MongoEngine.
Cree o edite el archivo models.py en el directorio de la aplicación y agregue el siguiente código.
|_+_|Hemos creado dos modelos de MongoEngine llamados Album y Song. Estos modelos corresponden a los documentos respectivos en MongoDB.
El álbum tiene un campo de tipo cadena con algunas restricciones.
- El nombre del álbum es único.
- El nombre del álbum no puede estar en blanco.
- El nombre del álbum puede tener un máximo de cien caracteres.
De manera similar, el documento Canción tiene un título, un campo de calificación y un campo de referencia que apunta a otro documento, Álbum. Guardemos este archivo y creemos datos con estos dos modelos. Vaya al directorio raíz del proyecto y use el comando flask shell para acceder a la aplicación flask en Python shell.
Una vez que ingrese al shell, use las siguientes declaraciones para acceder a los modelos de MongoEngine y crear datos de muestra como se muestra a continuación.
|_+_|Ahora accedamos a la base de datos usando el cliente Mongo y veamos si los datos se guardan como resultado de las declaraciones dadas anteriormente. En el código anterior, primero importamos Álbum y Canción, luego creamos sus objetos con los valores requeridos de los parámetros.
Aquí, los parámetros son los nombres de los campos definidos en los modelos, y mencionamos nuestros datos como valores para esos parámetros. Una vez que la creación del objeto es exitosa, llamamos al método de guardar en los objetos respectivos para guardar los documentos en la base de datos.
Utilice el comando mongo para acceder a MongoDB. Una vez que se conecte al servidor usando el cliente mongo, use los siguientes comandos.
# 1) Verifique la lista de bases de datos
|_+_|# 2) Utilice nuestra base de datos llamada mydb
|_+_|# 3) Verifique las colecciones a.k.a tablas en RDBMS
|_+_|# 4) Enumere cualquier documento de la colección de álbumes.
|_+_|# 5) Enumere cualquier documento de la colección de canciones.
|_+_|Si ha trabajado con Django, se dará cuenta de que MongoEngine funciona de manera muy similar al ORM incorporado de Django. En la última salida, cuando consultamos una canción, observe cómo la referencia de otro documento es para el campo del álbum.
Ahora creemos otro álbum y realicemos una actualización en el documento de la canción existente.
|_+_|Importamos ambos modelos, es decir, Álbum y Canción. Luego crea un nuevo documento llamado album2. Consulta la colección de canciones en la base de datos y obtén la canción con su título. Luego accedemos al objeto usando un índice de matriz del resultado de la consulta, lo actualizamos usando un operador de asignación y guardamos el documento actualizado.
Ahora usemos el cliente Mongo nuevamente para verificar las colecciones almacenadas.
|_+_|En el resultado de la segunda consulta en el fragmento anterior, observe el campo de álbum actualizado del documento Song1.
Ahora eliminemos los documentos de la colección Álbum y Canción. Utilice el siguiente código para eliminar los registros. Si todavía se encuentra en el caparazón del matraz, utilice los comandos que se mencionan a continuación para eliminar un documento y verificar la eliminación.
|_+_|Usamos el método de eliminación en song1 para eliminar el documento de la colección de canciones. Podríamos realizar todas las operaciones básicas de CRUD utilizando una carcasa de matraz. Además, podemos usar la clase ModelView de flask_appbuilder para mostrar los modelos de la base de datos como vistas.
Cree vistas basadas en modelos, como se muestra en el código siguiente.
|_+_|Primero importamos los modelos de la base de datos, junto con ModelView y MongoEngineInterface. Luego subclasificamos el ModelView y asignamos instancias particulares de MongoEngineInterface al atributo del modelo de datos de nuestras vistas.
Ahora registremos SongsView y AlbumView con el menú que se muestra a continuación en la misma categoría.
|_+_|Para acceder a esas vistas en la aplicación, vaya a http: // localhost: 8080 /, inicie sesión en la aplicación con las credenciales de administrador y realice los pasos que se mencionan a continuación para comprender las vistas predeterminadas basadas en el modelo de la base de datos.
Paso 1: Haga clic en el menú Vista de modelo

Paso 2: Haga clic en el submenú Vista de álbum.

Paso 3: Haga clic en el icono más para crear un documento o un registro.

Paso 4: Ingrese el nombre del álbum y guárdelo.
De forma similar a los pasos anteriores, puede realizar todas las operaciones CRUD utilizando estas vistas. Por lo tanto, creemos una canción usando el submenú Song View como se muestra en la imagen de abajo. Observe cómo se muestra un campo de referencia de un modelo de base de datos relacionado en el menú desplegable. Intente crear más álbumes y canciones.

Puede explorar más los mismos conceptos utilizando MongoAlchemy; Otro ORM fácil de usar y similar creado para facilitar el acceso y la manipulación de la base de datos MongoDB mediante Python.
Consulte la documentación de MongoAlchemy aquí . Sin embargo, recomendamos desarrollar un conocimiento básico de Flask-SQLAlchemy revisando primero la sección siguiente.
Matraz Sqlite o Matraz MySQL
En esta sección, reutilizamos la misma aplicación para SQLAlchemy como motor de backend. Por lo tanto, confirme todos sus cambios hasta ahora y cree una rama de Git tutorial-3-sqla por separado. Flask puede usar SQLite y MySQL como base de datos de backend. Le recomendamos que utilice SQLAlchemy como ORM con estas bases de datos relacionales.
Comencemos con los cambios que debemos realizar después de que revise una nueva sucursal.
Config
Abra config.py en el directorio raíz del proyecto y elimine la cadena de conexión de MongoDB. Actualice config.py con la cadena de conexión para Flask SQLite o Flask MySQL.
|_+_|Aplicación __init__.py
Ahora abra el archivo app / __ init__.py y las importaciones remotas relacionadas con MongoEngine, e importe SQLA como se muestra a continuación.
|_+_|Modelos de matraces
Actualice models.py con el siguiente código y elimine el código relacionado con MongoEngine.
|_+_|Vistas del matraz
Actualice views.py con el siguiente código.
|_+_|Tenga en cuenta que hemos utilizado la misma clase ModelView, sin embargo, cambiamos MongoEngineInterface con SQLAInterface.
Para crear las tablas y sus relaciones correspondientes, ejecutamos el comando mencionado a continuación para crear objetos de base de datos.
c ++ ide con compilador|_+_|
Recuerde que hemos cambiado el backend de la base de datos. Por lo tanto, use el comando flask fab create-admin para crear el usuario administrador. Ahora inicie el servidor de desarrollo como antes; usando python run.py. Vaya a http: // localhost: 8080.
Aquí, en este punto, nuestra aplicación funcionará como lo hizo en el caso de MongoDB. Pruébelo con todas las operaciones CRUD, como hicimos en las secciones anteriores.
Además, hemos mostrado las dos tablas correspondientes para los modelos de base de datos mientras usamos SQLite DB Browser.


Matraz MySQL
Para usar MySQL como backend de base de datos, cuando usamos Flask-SQLAlchemy, solo necesitamos actualizar una configuración relacionada con la base de datos en el config.py.
|_+_|Según la cadena de conexión dada, el nombre de la base de datos es myapp. El usuario para conectarse con la base de datos es myapp @ localhost. Sin embargo, ambos son requisitos previos y deberíamos crear utilizando los detalles que se proporcionan a continuación.
Por lo tanto, use las consultas que se indican a continuación para crear un usuario y una base de datos para que la base de datos Flask MySQL funcione en conjunto. Ejecute estas consultas en el cliente MySQL.
|_+_|También necesitamos instalar Python3 mysqlclient. Instale bibliotecas y encabezados de desarrollo como se indica en los siguientes comandos.
|_+_|Ahora que hemos cambiado el backend de la base de datos, necesitamos crear tablas correspondientes a los modelos de la base de datos. También necesitamos crear un usuario administrador de Flask ya que todos los elementos de menú registrados están protegidos y solo un usuario existente en la aplicación puede acceder a ellos.
Estos comandos que se proporcionan a continuación ocultan las instrucciones SQL de nivel inferior para eliminar y crear las tablas.
|_+_|Al completar con éxito todos los pasos anteriores, podemos navegar nuevamente a http: // localhost: 8080. Ahora acceda a la aplicación como obtuvimos en el caso de Flask SQLite.
Migrar matraz
Durante el desarrollo inicial de una aplicación, hay muchos cambios en el esquema de una base de datos. Los desarrolladores que agregan una gran sobrecarga al tiempo de desarrollo deben realizar estos cambios con frecuencia. En escenarios similares, el complemento Flask-Migrate es bastante útil.
Instalemos Flask-Migrate.
|_+_|Después de una instalación exitosa, se agrega un subcomando db. Verifique las utilidades de la línea de comandos que se agregan a este subcomando db utilizando el código mencionado a continuación.
|_+_|Primero, necesitamos crear un objeto de migración, como se muestra a continuación en app / __ init__.py.
|_+_|Probemos algunos comandos con la base de datos que tenemos en nuestra aplicación.
Inicialice un repositorio de migración independiente.
|_+_|De forma similar a los comandos anteriores, existen comandos para crear migraciones y aplicarlos mediante el comando de actualización. Usaremos estos comandos de migración como parte del flujo de trabajo en nuestros tutoriales posteriores cuando sea necesario.
Preguntas frecuentes
Es posible que se encuentre con algunas de las preguntas relacionadas con el uso de bases de datos con Flask.
P # 1) ¿Qué base de datos usa Flask?
Responder: Flask admite todas las bases de datos compatibles con SQLAlchemy, que es un kit de herramientas de base de datos para Python y es un ORM (Object Relation Mapper). Podemos instalar Flask-SQLAlchemy desde PyPI para trabajar con SQLAlchemy.
Flask-Alchemy es un complemento de Flask y requiere una configuración mínima además de su instalación. Algunas de las bases de datos predominantes que los desarrolladores usan con Flask-SQLAlchemy son SQLite, PostgreSQL, MySQL, etc.
Flask también tiene complementos como Flask-MongoEngine, Flask-MongoAlchemy, Flask-CouchDB, etc. para trabajar con bases de datos basadas en documentos NoSQL como MongoDB y CouchDB.
P # 2) ¿Cómo creo una base de datos en Flask?
Responder: La creación de una base de datos en Flask generalmente depende del patrón seguido por el complemento correspondiente de Flask. Casi todos los complementos crean bases de datos basadas en la configuración de conexión de la base de datos definida en la configuración de Flask en el proyecto.
Sin embargo, puede escribir su propio método para crear una base de datos en Flask cuando no utilice un complemento.
A continuación, le damos un ejemplo trivial de cómo crear un ejemplo de SQLite. Este ejemplo usa g Object para mantener la referencia de la conexión a la base de datos.
|_+_|P # 3) ¿Cómo se muestran los datos de una base de datos en Flask?
Responder: En Flask, los desarrolladores utilizan varios mapeadores relacionales de objetos, también llamados ORM. Estos ORM generalmente tienen API para acceder a la base de datos utilizando el atributo de consulta para leer los datos de un modelo de base de datos definido. Los resultados de las consultas que se almacenan en las estructuras de datos de Python se muestran con la ayuda de Flask Templates.
Sin embargo, mientras se prueban los modelos de la base de datos, los resultados también se pueden imprimir en la Consola en Flask Shell.
A continuación se ofrece un ejemplo de consulta de datos mediante la API de consultas en Flask-SQLAlchemy.
|_+_|Conclusión
En este tutorial, cubrimos conceptos relacionados con la conexión a diferentes bases de datos usando el mismo diseño de proyecto. Nos alejamos del paradigma de escribir consultas SQL sin procesar dentro del código.
¿Qué capa del modelo osi funciona con marcos?
Un enfoque para escribir tablas en forma de modelos nos hace más ágiles. También cubrimos los conceptos de almacenamiento de información de bases de datos como migraciones. Las migraciones añaden más flexibilidad a nuestro flujo de trabajo de desarrollo.
Hasta ahora, hemos trabajado en un arquetipo que es generado automáticamente por el creador de aplicaciones Flask. En nuestros próximos tutoriales de esta serie, damos un paso más y discutimos las otras plantillas de Flask y los conceptos de trabajar con planos de Flask.
=> Consulte TODOS los tutoriales de matraces aquí
Lectura recomendada
- Tutorial de Python Flask - Introducción a Flask para principiantes
- Tutorial de API de matraz con ejemplo | Ampliación de Flask con API
- Aplicación Flask y diseño de proyecto Flask con Blueprint y Bootstrap
- Las 31 preguntas más populares de la entrevista con Python Flask con respuestas
- Las 10 mejores herramientas de diseño de bases de datos para crear modelos de datos complejos
- Tutorial de creación de base de datos de MongoDB
- MongoDB Create Database Backup