Conecte la base de datos MySQL en Flask

Salman Mehmood 18 agosto 2022
Conecte la base de datos MySQL en Flask

Aprenderemos, con esta explicación, cómo conectar una base de datos MySQL en Flask con la ayuda de flask_mysqldb. También aprenderemos cómo configurar una base de datos en línea.

Conecte la base de datos MySQL en Flask con la ayuda de flask_mysqldb

A veces, los usuarios quieren escribir consultas directamente en SQL en lugar de usar algo como sql-alchemy, por lo que sea cual sea el motivo, tiene la opción de escribir las consultas SQL. En Flask, mysqldb le permite hacer esto.

Ahora crearemos una base de datos MySQL gratuita en el servicio llamado freemysqlhosting.net. Puede visitar el sitio web utilizando este enlace.

Después de crear su cuenta, obtendrá una pantalla como se muestra a continuación, y cuando cree una base de datos, recibirá un correo electrónico con la información de su base de datos dentro de los 15 minutos.

Alojamiento MySQL gratuito

Ahora usaremos esta base de datos para obtener información dentro de nuestra aplicación Flask. Lo primero que haremos será instalar un módulo llamado Flask-MySQLdb.

pip install Flask-MySQLdb

Ahora necesitaremos importar las bibliotecas requeridas:

from flask import Flask
from flask_mysqldb import MySQL

Ahora crearemos una instancia de aplicación e instanciaremos esta aplicación usando la clase MySQL(app). También puede usar el siguiente código para especificar su aplicación Flask si está trabajando con varias aplicaciones Flask:

mysql = MySQL()
mysql.init_app(app)

Pero tenemos todo en un archivo, así que no necesitamos hacer esto. Y dado que estamos trabajando con una base de datos, necesitaremos establecer la configuración.

Primero, necesitaremos definir el MYSQL_USER, y luego necesitamos el MYSQL_PASSWORD. También necesitamos definir MYSQL_HOST donde se encuentra la base de datos; puede estar en su máquina local o en un servicio separado como el que ya hemos configurado o en cualquier otro lugar.

También tenemos la base de datos en sí, por lo que tenemos que definir el nombre de la base de datos. Pondremos una configuración adicional que no es necesariamente necesaria, lo que es útil para obtener los datos devueltos.

Solo se necesitan tuplas, pero es un poco más fácil trabajar con los diccionarios cuando se trata de bases de datos porque las columnas pueden ser una clave, y el valor de esas claves será el valor en una columna en particular. Si no añadimos nada, toma la tupla por defecto.

app.config["MYSQL_USER"] = "user_name"
app.config["MYSQL_PASSWORD"] = "user_password"
app.config["MYSQL_HOST"] = "sql3.example.net"
app.config["MYSQL_DB"] = "Database_name"
app.config["MYSQL_CURSORCLASS"] = "DictCursor"

mysql = MySQL(app)

Puedes poner el puerto, pero la base de datos MySQL, por defecto, usa 3306, por lo que no necesitamos actualizar nada. Ahora queremos interactuar con la base de datos, entonces crearemos la ruta y crearemos una función llamada CONNECT_DB(), y para interactuar con la base de datos, necesitamos usar un cursor.

El cursor nos permitirá ejecutar declaraciones para obtener los resultados de esas declaraciones. Crearemos una variable llamada CS y la instanciaremos usando mysql.connection.cursor(), y también crearemos una tabla y la llamaremos TABLE_NAME, y definiremos un par de columnas.

@app.route("/")
def CONNECT_DB():
    CS = mysql.connection.cursor()
    CS.execute("""CREATE TABLE TABLE_NAME (id INTEGER, name VARCHAR(20))""")

Ya hemos creado la tabla e insertaremos datos en la tabla. Luego, debemos confirmar después de insertar datos o actualizar o eliminar.

También devolveremos una cadena cuando los datos se inserten en la base de datos.

CS.execute("""INSERT INTO TABLE_NAME VALUES (1, 'Harry')""")
CS.execute("""INSERT INTO TABLE_NAME VALUES (2, 'Arthor')""")
mysql.connection.commit()
return "Executed successfully"

Avancemos y ejecutemos el servidor y veamos si la cadena se devuelve en el navegador. Asegúrese de que su conexión a Internet esté conectada.

Flask MySQL - Salida 1

Necesitaremos verificar que los datos estén insertados en la base de datos. Ahora hará una consulta para seleccionar la tabla.

Dado que recuperaremos varias filas, podemos usar fetchall(). Pondremos toda nuestra información en la variable Executed_DATA.

Imprimiremos esto en la consola y mostraremos el valor devuelto:

CS.execute("""SELECT * FROM TABLE_NAME""")
Executed_DATA = CS.fetchall()
print(Executed_DATA)
return str(Executed_DATA[1]["name"])

Guardemos y refresquemos la página. Podemos ver el valor que se muestra, y si miramos aquí abajo en la consola, podemos ver una tupla con dos elementos.

Flask MySQL - Salida 2

Código Python completo:

from flask import Flask
from flask_mysqldb import MySQL

app = Flask(__name__)

app.config["MYSQL_USER"] = "user_name"
app.config["MYSQL_PASSWORD"] = "user_password"
app.config["MYSQL_HOST"] = "sql3.example.net"
app.config["MYSQL_DB"] = "Database_name"
app.config["MYSQL_CURSORCLASS"] = "DictCursor"

mysql = MySQL(app)

# mysql.init_app(app)


@app.route("/")
def CONNECT_DB():
    CS = mysql.connection.cursor()
    # CS.execute('''CREATE TABLE TABLE_NAME (id INTEGER, name VARCHAR(20))''')

    # CS.execute('''INSERT INTO TABLE_NAME VALUES (1, 'Harry')''')
    # CS.execute('''INSERT INTO TABLE_NAME VALUES (2, 'Arthor')''')
    # mysql.connection.commit()
    # return 'Executed successfully'

    CS.execute("""SELECT * FROM TABLE_NAME""")
    Executed_DATA = CS.fetchall()
    print(Executed_DATA)
    return str(Executed_DATA[1]["name"])


if __name__ == "__main__":
    app.run(debug=True)
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn