Flask で MySQL データベースを接続する
この説明を使用して、flask_mysqldb
を使用して Flask で MySQL データベースに接続する方法を学習します。また、オンラインでデータベースを設定する方法についても学びます。
Flask で flask_mysqldb
を使用して MySQL データベースを接続する
ユーザーは、sql-alchemy
のようなものを使用するのではなく、SQL で直接クエリを記述したい場合があるため、理由が何であれ、クエリを SQL で記述するオプションがあります。Flask では、mysqldb
を使用してこれを行うことができます。
次に、freemysqlhosting.net
というサービスで無料の MySQL データベースを作成します。このリンクを使用して Web サイトにアクセスできます。
アカウントを作成すると、以下のような画面が表示されます。データベースを作成すると、15 分以内にデータベース情報が記載されたメールが届きます。
これで、Flask アプリ内の情報にこのデータベースを使用します。最初に行うことは、Flask-MySQLdb
というモジュールをインストールすることです。
pip install Flask-MySQLdb
次に、必要なライブラリをインポートする必要があります。
from flask import Flask
from flask_mysqldb import MySQL
次に、アプリインスタンスを作成し、MySQL(app)
クラスを使用してこのアプリをインスタンス化します。複数の Flask アプリを使用している場合は、次のコードを使用して Flask アプリを指定することもできます。
mysql = MySQL()
mysql.init_app(app)
ただし、すべてが 1つのファイルに含まれているため、これを行う必要はありません。また、データベースを使用しているため、構成をセットアップする必要があります。
まず、MYSQL_USER
を定義する必要があり、次に MYSQL_PASSWORD
が必要です。また、データベースが配置されている場所に MYSQL_HOST
を定義する必要があります。ローカルマシン上にある場合もあれば、すでにまたは他の場所に設定されているような別のサービス上にある場合もあります。
データベース自体もあるので、データベースの名前を定義する必要があります。必ずしも必要ではない追加の構成を配置します。これは、返されたデータを取得するのに役立ちます。
タプルだけが必要ですが、データベースに関しては、列がキーになる可能性があり、それらのキーの値が特定の列の値になるため、辞書の操作が少し簡単になります。何も追加しない場合、デフォルトでタプルが使用されます。
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 データベースはデフォルトで 3306 を使用するため、何も更新する必要はありません。ここでデータベースと対話したいので、ルートを作成し、CONNECT_DB()
という関数を作成します。データベースと対話するには、カーソルを使用する必要があります。
カーソルを使用すると、ステートメントを実行して、それらのステートメントの結果を取得できます。CS
という変数を作成し、mysql.connection.cursor()
を使用してインスタンス化します。また、テーブルを作成して TABLE_NAME
と呼び、いくつかの列を定義します。
@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"
先に進んでサーバーを実行し、文字列がブラウザに返されるかどうかを確認しましょう。インターネット接続が接続されていることを確認してください。
データがデータベースに挿入されていることを確認する必要があります。次に、テーブルを選択するためのクエリを作成します。
複数の行を取得するため、fetchall()
を使用できます。すべての情報を Executed_DATA
変数に入れます。
これをコンソールに出力し、戻り値を表示します。
CS.execute("""SELECT * FROM TABLE_NAME""")
Executed_DATA = CS.fetchall()
print(Executed_DATA)
return str(Executed_DATA[1]["name"])
ページを保存して更新しましょう。表示された値を確認できます。コンソールでここを見下ろすと、2つのアイテムを持つタプルが表示されます。
完全な Python コード:
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)
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