日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Python?Flask?模型介紹和配置方法_python

作者:我是腫腫哦~~ ? 更新時間: 2023-01-05 編程語言

Flask數據模型和連接數據庫

flask是基于MTV的結構,其中M指的就是模型,即數據模型,在項目中對應的是數據庫。flask與數據庫建立聯系有很多方法,但一般分為兩種,一種是使用pymsql對數據庫建立連接;還有一種是ORM映射的方式(基于pymysql),這種方式常用于web開發。以對象的形式與數據庫表做映射,方便對象在頁面中顯示。下面紀錄以mysql和orm方式連接數據庫。

一、安裝

準備工作,安裝一下庫:

pip3 install pymysql        建公路

pip3 install flask-sqlalchemy    實現ORM映射

pip3 install flask-migrate     發布命令工具

二、配置數據庫連接、創建模型類

步驟:
(1) 配置數據庫的連接路徑

# mysql+pymysql://user:password@hostip:port/databasename
# 數據庫+pymysql://用戶名:密碼@主機ip:端口/數據庫名
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:root@127.0.0.1:3306/flaskdemo'

(2) flask-sqlalchemy的搭建:在apps包下創建包ext(第三方庫的配置通常建個ext文件夾存放),用于存放與數據庫有關的代碼,在__init__.py中添加:

   db = SQLAlchemy()   ---->必須跟app聯系

在apps/init.py文件(這里我將啟動app和app初始化分開了,此處的__init__是app的初始化)下與app建立聯系:

   def create_app():
        ....
        # 跟app聯系
        db.init_app(app)

        return app

(3) 創建模型:models.py,模型就是類,經常稱作模型類

  class User(db.Model):      ------> user表
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(15), nullable=False)
    password = db.Column(db.String(12), nullable=False)
    phone = db.Column(db.String(11), unique=True)
    rdatetime = db.Column(db.DateTime, default=datetime.now)

常見的數據類型:
Integer 整型
String(size) 字符串類型,務必指定大小
Text 長文本類型
DateTime 日期時間
Float 浮點類型
Boolean 布爾類型
PickleType 存儲pickle類型 主要跟序列化有關
LargeBinary 存儲大的二進制類型

可選的:
primary_key=True 主鍵
autoincrement=True 自增
nullable=False 不允許為空
unique=True 唯一
default=datetime.now 默認值 可以設置成當前系統時間或者其他的值

三、使用命令創建數據庫表

a. 在app.py 中導入模型:from apps.user.models import User —》讓模型與app關聯
b. 在終端使用命令:db 建立數據庫/更新數據庫
flask db init -----》 產生一個文件夾migrations
flask db migrate -----> 自動產生了一個版本文件
flask db upgrade ------> 同步,完成數據庫表創建

     項目結構
      | ---apps
      | ---ext
      | ---migrations    flask db init     只需要init一次
               |---versions   版本文件夾
                    |---71edde7ee937_.py    ---》 flask db migrate  遷移
                    |---cc0dca61130f_.py
                                                  flask  db upgrade 同步
                                                  flask  db downgrade 降級

四、以注冊為例

1.創建app、migrate(綁定app、數據庫),app.run啟動入口

2.apps文件下__init__.py文件初始化app配置

3.數據庫配置

4.創建模型類

5.通過命令創建數據庫表
flask db init -----》 產生一個文件夾migrations
flask db migrate -----> 自動產生了一個版本文件
flask db upgrade ------> 同步,完成數據庫表創建
此刻在pycharm的數據庫視圖中可以看到創建好的數據庫表

6.編寫注冊邏輯(視圖)

# 用戶注冊
@user_bp.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'POST':
        username = request.form.get('username')
        password = request.form.get('password')
        repassword = request.form.get('repassword')
        phone = request.form.get('phone')
        email = request.form.get('email')
        if password == repassword:
            # 注冊用戶
            user = User()
            user.username = username
            # 自定義加密:new_password = hashlib.sha256(password.encode('utf-8')).hexdigest()
            # 使用自帶的函數實現加密:generate_password_hash
            user.password = generate_password_hash(password)
            print(len(user.password))
            user.phone = phone
            user.email = email
            # 添加并提交
            db.session.add(user)
            db.session.commit()
            return redirect(url_for('user.index'))
    return render_template('user/register.html')

7.編寫模板即html頁面即可實現簡單的注冊功能,實現MTV的整合

原文鏈接:https://blog.csdn.net/victory_CEO/article/details/127667238

欄目分類
最近更新