在 Flask 中連線 MySQL 資料庫
通過這個解釋,我們將學習如何在 flask_mysqldb
的幫助下在 Flask 中連線 MySQL 資料庫。我們還將學習如何線上設定資料庫。
藉助 flask_mysqldb
在 Flask 中連線 MySQL 資料庫
有時使用者希望直接在 SQL 中編寫查詢,而不是使用諸如 sql-alchemy
之類的東西,因此無論出於何種原因,你都可以選擇編寫查詢 SQL。在 Flask 中,mysqldb
允許你這樣做。
現在我們將在名為 freemysqlhosting.net
的服務上建立一個免費的 MySQL 資料庫。你可以使用此連結訪問該網站。
建立帳戶後,你將看到如下所示的螢幕,當你建立資料庫時,你將在 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)
但是我們將所有內容都放在一個檔案中,因此我們不需要這樣做。由於我們正在使用資料庫,因此我們需要設定配置。
首先,我們需要定義 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"])
讓我們儲存並重新整理頁面。我們可以看到顯示的值,如果我們在控制檯中向下看,我們可以看到一個包含兩個專案的元組。
完整的 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