咱們以前學過SQLAlchemy,一個獨立的數據庫關係對象映射,其實在flask中也有官方承認的第三方SQLAlchemy組件,用於處理flask中對象關係映射。mysql
pip install flask_sqlalchemy
咱們準備一個乾淨的flask項目,目錄結構以下,下面咱們基於這個項目,加入flask_sqlachemy使項目操做數據庫。sql
1.加入flask_sqlalchemy組件數據庫
flask_sqlalchemy_project/__init__
.pyflask
from flask import Flask # 導入Flask-SQLAlchemy中的SQLAlchemy from flask_sqlalchemy import SQLAlchemy # 實例化SQLAlchemy db = SQLAlchemy() # PS : 實例化SQLAlchemy的代碼必需要在引入藍圖以前 from flask_sqlalchemy_lesson.views import user def create_app(): app = Flask(__name__) # 初始化App配置 這個app配置就厲害了,專門針對 SQLAlchemy 進行配置 # SQLALCHEMY_DATABASE_URI 配置 SQLAlchemy 的連接字符串兒 app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:DragonFire@127.0.0.1:3306/dragon?charset=utf8" # SQLALCHEMY_POOL_SIZE 配置 SQLAlchemy 的鏈接池大小 app.config["SQLALCHEMY_POOL_SIZE"] = 5 # SQLALCHEMY_POOL_TIMEOUT 配置 SQLAlchemy 的鏈接超時時間 app.config["SQLALCHEMY_POOL_TIMEOUT"] = 15 app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False # 初始化SQLAlchemy , 本質就是將以上的配置讀取出來 db.init_app(app) app.register_blueprint(user) return app
2.創建models.py文件,ORM模型文件session
from flask_sqlalchemy import SQLAlchemy from flask_sqlalchemy_lesson import db # Base = db.Model # 這句話你是否還記的? # from sqlalchemy.ext.declarative import declarative_base # Base = declarative_base() # 每一次咱們在建立數據表的時候都要作這樣一件事 # 然而Flask-SQLAlchemy已經爲咱們把 Base 封裝好了 # 創建User數據表 class Users(db.Model): # 指定一個表名 __tablename__="user_flask" # 在SQLAlchemy 中咱們是導入了Column和數據類型 Integer 在這裏就和db.Model同樣,已經封裝好了 id = db.Column(db.Integer,primary_key=True) name = db.Column(db.String(32),nullable=False) if __name__ == '__main__': from day101_SQLAlchemy.flask_sqlalchemy_lesson import create_app # 導入數據庫的 app = create_app() db.create_all(app=app)
3.藍圖函數中user.pyapp
from flask import Blueprint from day101_SQLAlchemy.flask_sqlalchemy_lesson.models import Users,db user_bp = Blueprint("user_bp",__name__) @user_bp.route("/add_user/<username>",methods=["GET","POST"]) def add_user(username): u = Users(name=username) db.session.add(u) # 打開數據庫鏈接窗口 db.session.commit() return "200 add success" @user_bp.route("/get_user/<username>",methods=["GET","POST"]) def get_user(username): u = Users.query.filter(Users.name == username).first() return u.name
4.運行項目manage.py文件less
from day101_SQLAlchemy.flask_sqlalchemy_lesson import create_app app = create_app() if __name__ == '__main__': app.run()
函數