亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2022年12月08日 11:27:36   作者:我是腫腫哦~~  
flask是基于MTV的結(jié)構(gòu),其中M指的就是模型,即數(shù)據(jù)模型,在項(xiàng)目中對應(yīng)的是數(shù)據(jù)庫,下面紀(jì)錄以mysql和orm方式連接數(shù)據(jù)庫的方法,對Python?Flask?模型介紹和配置方法感興趣的朋友跟隨小編一起看看吧

Flask數(shù)據(jù)模型和連接數(shù)據(jù)庫

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

一、安裝

準(zhǔn)備工作,安裝一下庫:

pip3 install pymysql        建公路

pip3 install flask-sqlalchemy    實(shí)現(xiàn)ORM映射

pip3 install flask-migrate     發(fā)布命令工具

二、配置數(shù)據(jù)庫連接、創(chuàng)建模型類

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

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

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

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

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

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

        return app

(3) 創(chuàng)建模型:models.py,模型就是類,經(jīng)常稱作模型類

  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)

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

可選的:
primary_key=True 主鍵
autoincrement=True 自增
nullable=False 不允許為空
unique=True 唯一
default=datetime.now 默認(rèn)值 可以設(shè)置成當(dāng)前系統(tǒng)時(shí)間或者其他的值

三、使用命令創(chuàng)建數(shù)據(jù)庫表

a. 在app.py 中導(dǎo)入模型:from apps.user.models import User —》讓模型與app關(guān)聯(lián)
b. 在終端使用命令:db 建立數(shù)據(jù)庫/更新數(shù)據(jù)庫
flask db init -----》 產(chǎn)生一個(gè)文件夾migrations
flask db migrate -----> 自動產(chǎn)生了一個(gè)版本文件
flask db upgrade ------> 同步,完成數(shù)據(jù)庫表創(chuàng)建

     項(xiàng)目結(jié)構(gòu)
      | ---apps
      | ---ext
      | ---migrations    flask db init     只需要init一次
               |---versions   版本文件夾
                    |---71edde7ee937_.py    ---》 flask db migrate  遷移
                    |---cc0dca61130f_.py
                                                  flask  db upgrade 同步
                                                  flask  db downgrade 降級

四、以注冊為例

1.創(chuàng)建app、migrate(綁定app、數(shù)據(jù)庫),app.run啟動入口

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

3.數(shù)據(jù)庫配置

4.創(chuàng)建模型類

5.通過命令創(chuàng)建數(shù)據(jù)庫表
flask db init -----》 產(chǎn)生一個(gè)文件夾migrations
flask db migrate -----> 自動產(chǎn)生了一個(gè)版本文件
flask db upgrade ------> 同步,完成數(shù)據(jù)庫表創(chuàng)建
此刻在pycharm的數(shù)據(jù)庫視圖中可以看到創(chuàng)建好的數(shù)據(jù)庫表

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()
            # 使用自帶的函數(shù)實(shí)現(xiàn)加密: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頁面即可實(shí)現(xiàn)簡單的注冊功能,實(shí)現(xiàn)MTV的整合

到此這篇關(guān)于Python Flask 模型介紹和配置方法的文章就介紹到這了,更多相關(guān)Python Flask 模型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go/Python/Erlang編程語言對比分析及示例代碼

    Go/Python/Erlang編程語言對比分析及示例代碼

    這篇文章主要介紹了Go/Python/Erlang編程語言對比分析及示例代碼,本文重點(diǎn)是給大家介紹go語言,從語言對比分析的角度切入介紹,需要的朋友可以參考下
    2018-04-04
  • python連接讀寫操作redis的完整代碼實(shí)例

    python連接讀寫操作redis的完整代碼實(shí)例

    這篇文章主要介紹了python連接讀寫操作redis的完整代碼實(shí)例,包括redis連接與讀寫操作,redis-sentinel哨兵模式下Python操作redis,redis-cluster(集群)模式下Python操作redis,需要的朋友可以參考下
    2023-01-01
  • 通過python 執(zhí)行 nohup 不生效的解決

    通過python 執(zhí)行 nohup 不生效的解決

    這篇文章主要介紹了通過python 執(zhí)行 nohup 不生效的解決,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python 3.x讀寫csv文件中數(shù)字的方法示例

    Python 3.x讀寫csv文件中數(shù)字的方法示例

    在我們?nèi)粘i_發(fā)中經(jīng)常需要對csv文件進(jìn)行讀寫,下面這篇文章主要給大家介紹了關(guān)于Python 3.x讀寫csv文件中數(shù)字的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • python向MySQL數(shù)據(jù)庫插入數(shù)據(jù)的操作方法

    python向MySQL數(shù)據(jù)庫插入數(shù)據(jù)的操作方法

    這篇文章主要介紹了python向MySQL數(shù)據(jù)庫插入數(shù)據(jù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-11-11
  • pytorch預(yù)測之解決多次預(yù)測結(jié)果不一致問題

    pytorch預(yù)測之解決多次預(yù)測結(jié)果不一致問題

    這篇文章主要介紹了pytorch多次預(yù)測結(jié)果不一致的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 基于python實(shí)現(xiàn)聊天室程序

    基于python實(shí)現(xiàn)聊天室程序

    這篇文章主要為大家詳細(xì)介紹了基于python實(shí)現(xiàn)聊天室程序,該程序由客戶端與服務(wù)器構(gòu)成,使用UDP服務(wù),實(shí)現(xiàn)了群發(fā)、私發(fā)、點(diǎn)對點(diǎn)文件互傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • python腳本實(shí)現(xiàn)分析dns日志并對受訪域名排行

    python腳本實(shí)現(xiàn)分析dns日志并對受訪域名排行

    這篇文章主要介紹了python腳本實(shí)現(xiàn)分析dns日志并對受訪域名排行,本文是在Windows服務(wù)器環(huán)境中實(shí)現(xiàn),需要的朋友可以參考下
    2014-09-09
  • pandas中merge函數(shù)的用法

    pandas中merge函數(shù)的用法

    merge()函數(shù)是Pandas中用于合并兩個(gè)DataFrame的函數(shù),本文主要介紹了pandas中merge函數(shù)的用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • 對python中詞典的values值的修改或新增KEY詳解

    對python中詞典的values值的修改或新增KEY詳解

    今天小編就為大家分享一篇對python中詞典的values值的修改或新增KEY詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01

最新評論