MySQL-Datenbank in Flask verbinden

Salman Mehmood 18 August 2022
MySQL-Datenbank in Flask verbinden

Wir lernen mit dieser Erklärung, wie man eine MySQL-Datenbank in Flask mit Hilfe von flask_mysqldb anbindet. Wir werden auch lernen, wie man eine Datenbank online einrichtet.

MySQL-Datenbank in Flask mit Hilfe von flask_mysqldb verbinden

Manchmal möchten Benutzer Abfragen direkt in SQL schreiben, anstatt etwas wie sql-alchemy zu verwenden, also haben Sie aus welchem ​​Grund auch immer die Möglichkeit, die Abfragen in SQL zu schreiben. In Flask können Sie dies mit mysqldb tun.

Jetzt erstellen wir eine kostenlose MySQL-Datenbank auf dem Dienst namens freemysqlhosting.net. Sie können die Website über diesen Link besuchen.

Nachdem Sie Ihr Konto erstellt haben, erhalten Sie einen Bildschirm wie unten gezeigt, und wenn Sie eine Datenbank erstellen, erhalten Sie innerhalb von 15 Minuten eine E-Mail mit Ihren Datenbankinformationen.

Kostenloses MySQL-Hosting

Jetzt werden wir diese Datenbank für Informationen in unserer Flask-App verwenden. Als erstes installieren wir ein Modul namens Flask-MySQLdb.

pip install Flask-MySQLdb

Jetzt müssen wir die erforderlichen Bibliotheken importieren:

from flask import Flask
from flask_mysqldb import MySQL

Jetzt erstellen wir eine App-Instanz und instanziieren diese App mit der Klasse MySQL(app). Sie können auch den folgenden Code verwenden, um Ihre Flask-App anzugeben, wenn Sie mit mehreren Flask-Apps arbeiten:

mysql = MySQL()
mysql.init_app(app)

Aber wir haben alles in einer Datei, also brauchen wir das nicht zu tun. Und da wir mit einer Datenbank arbeiten, müssen wir die Konfiguration einrichten.

Zuerst müssen wir den MYSQL_USER definieren, und dann brauchen wir das MYSQL_PASSWORD. Wir müssen auch MYSQL_HOST definieren, wo sich die Datenbank befindet; Es kann sich auf Ihrem lokalen Computer oder einem separaten Dienst befinden, wie wir ihn bereits eingerichtet haben, oder an einem anderen Ort.

Wir haben auch die Datenbank selbst, also müssen wir den Namen der Datenbank definieren. Wir werden eine zusätzliche Konfiguration vornehmen, die nicht unbedingt erforderlich ist, was hilfreich ist, um die zurückgegebenen Daten zu erhalten.

Es sind nur Tupel erforderlich, aber Wörterbücher sind etwas einfacher zu handhaben, wenn es um Datenbanken geht, da die Spalten ein Schlüssel sein können und der Wert dieser Schlüssel der Wert in einer bestimmten Spalte ist. Wenn wir nichts hinzufügen, wird standardmäßig das Tupel verwendet.

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)

Sie können den Port angeben, aber die MySQL-Datenbank verwendet standardmäßig 3306, sodass wir nichts aktualisieren müssen. Jetzt wollen wir mit der Datenbank interagieren, also erstellen wir die Route und erstellen eine Funktion namens CONNECT_DB(), und um mit der Datenbank zu interagieren, müssen wir einen Cursor verwenden.

Der Cursor ermöglicht es uns, Anweisungen auszuführen, um die Ergebnisse dieser Anweisungen zu erhalten. Wir werden eine Variable namens CS erstellen und sie mit mysql.connection.cursor() instanziieren, und wir werden auch eine Tabelle erstellen und sie TABLE_NAME nennen, und wir werden ein paar Spalten definieren.

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

Wir haben die Tabelle bereits erstellt und werden Daten in die Tabelle einfügen. Dann müssen wir nach dem Einfügen von Daten oder dem Aktualisieren oder Löschen festschreiben.

Wir werden auch eine Zeichenfolge zurückgeben, wenn die Daten in die Datenbank eingefügt werden.

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

Lassen Sie uns fortfahren und den Server ausführen und sehen, ob die Zeichenfolge im Browser zurückgegeben wird. Stellen Sie sicher, dass Ihre Internetverbindung verbunden ist.

Flask MySQL - Ausgabe 1

Wir müssen überprüfen, ob die Daten in die Datenbank eingefügt wurden. Jetzt wird eine Abfrage zur Auswahl der Tabelle durchgeführt.

Da wir mehrere Zeilen abrufen werden, können wir fetchall() verwenden. Wir werden alle unsere Informationen in die Variable Executed_DATA einfügen.

Wir werden dies auf der Konsole ausgeben und den zurückgegebenen Wert anzeigen:

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

Lassen Sie uns die Seite speichern und aktualisieren. Wir können den angezeigten Wert sehen, und wenn wir hier unten in der Konsole nach unten schauen, sehen wir ein Tupel mit zwei Elementen.

Flask-MySQL - Ausgabe 2

Vollständiger Python-Code:

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