Flask 數據庫連接


Flask擁有豐富的擴展組件,數據庫管理方面Flask-SQLAlchemy簡化了數據庫管理的操作。SQLAlchemy是一個很強大的關系型數據庫框架,支持多種數據庫后台。其不但提供了高層ORM,而且也提供了使用數據庫原生SQL的底層功能。和其他大多數擴展一樣,Flask-SQLAlchemy也使用pip安裝:

pip install flask-sqlalchemy

在Flask中連接MySQL時出現ModuleNotFoundError: No module named 'MySQLdb'錯誤,只要在配置SQLALCHEMY_DATABASE_URI時,加上一個pymysql就可以了:
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:root@localhost:3306/數據庫名?charset=utf8mb4'
,當然,前提是要已經安裝了pymysql,如果沒有裝pymysql,是會報ModuleNotFoundError: No module named 'pymysql'錯誤的,

安裝命令:

pip install pymysql

在利用Flask實現研究課題相關系統時,涉及到數據庫相關操作。由於使用Python3開發語言,python3中已經不再支持MySQLdb模塊,所以這里使用pymysql數據庫連接組件,安裝pymysql:

pip install pymysql

數據庫連接:

from flask_sqlalchemy import SQLAlchemy
配置數據庫連接
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:root@localhost:3306/數據庫名?charset=utf8mb4'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)

當建立model.py文件后,一般需要引入,這個位置很關鍵要放在db創建的下面,db,creat_all()前面。

下面是我的一些初始化配置文件 init.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

import os

# 快速定位文件位置
basedir = os.path.abspath(os.path.dirname(__file__))

# 創建項目對象
app = Flask(__name__)

# SQLALCHEMY_DATABASE_URI:用於連接數據庫
# mysql://username:password@hostname/database?編碼
app.config['SQLALCHEMY_DATABASE_URI'] = \
    "mysql+pymysql://root:root@localhost:3306/html_db?charset=utf8mb4"

# 如果設置成True(默認情況),Flask-SQLAlchemy 將會追蹤對象的修改並且發送信號。
# 這需要額外的內存, 如果不必要的可以禁用它。如果你不顯示的調用它,
# 在最新版的運行環境下,會顯示警告。
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

app.config.from_object('html_report.setting')     # 模塊下的setting文件名,不用加py后綴
# 環境變量,指向配置文件setting的路徑
FLASKR_SETTINGS = os.path.join(basedir, "setting")
app.config.from_envvar("FLASKR_SETTINGS", silent=True)


db = SQLAlchemy(app)

from html_report.model import user, category


def db_init():
    db.create_all()


db_init()
setting.py文件

對於用過Django文件的同學們,應該不陌生,這是一個各種配置信息的文件,可以把所有的配置寫進去,只不過我寫在了init文件中,這個看個人習慣,flask數據庫沒有Django封裝的好,數據庫的定義多樣化。

# 打開調試模式
DEBUG = True

# SQLALCHEMY_TRACK_MODIFICATIONS = False
# # session必須要設置key
SECRET_KEY = 'A0Zr98j/3yX R~XHH!jmN]'
#
# # mysql數據庫連接信息,這里改為自己的賬號
# SQLALCHEMY_DATABASE_URI = "mysql://username:password@ip:port/dbname"

runserver.py 是我的項目啟動文件

 from html_report import app


@app.route('/')
def hello_world():
    return 'Hello World!'


if __name__ == '__main__':
    app.run(debug=True)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM