Python?Flask?模型介紹和配置方法
Flask數(shù)據(jù)模型和連接數(shù)據(jù)庫
flask是基于MTV的結(jié)構(gòu),其中M指的就是模型,即數(shù)據(jù)模型,在項目中對應(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 實現(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://用戶名:密碼@主機ip:端口/數(shù)據(jù)庫名 SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:root@127.0.0.1:3306/flaskdemo'
(2) flask-sqlalchemy的搭建:在apps包下創(chuàng)建包ext(第三方庫的配置通常建個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 日期時間
Float 浮點類型
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)時間或者其他的值
三、使用命令創(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)生一個文件夾migrations
flask db migrate -----> 自動產(chǎn)生了一個版本文件
flask db upgrade ------> 同步,完成數(shù)據(jù)庫表創(chuà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)生一個文件夾migrations
flask db migrate -----> 自動產(chǎn)生了一個版本文件
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ù)實現(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頁面即可實現(xiàn)簡單的注冊功能,實現(xiàn)MTV的整合

到此這篇關(guān)于Python Flask 模型介紹和配置方法的文章就介紹到這了,更多相關(guān)Python Flask 模型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用BeautifulSoup進(jìn)行XPath和CSS選擇器定位
在 Python 中,BeautifulSoup 是一個常用的 HTML 和 XML 解析庫,它允許我們輕松地定位和提取網(wǎng)頁中的特定元素,本文將詳細(xì)介紹如何在 BeautifulSoup 中使用 XPath 和 CSS 選擇器定位 HTML 元素,并提供示例代碼以幫助新手理解這些概念,需要的朋友可以參考下2024-11-11
python基礎(chǔ)之while循環(huán)、for循環(huán)詳解及舉例
所謂循環(huán)結(jié)構(gòu)就是程序中控制某條或某些指令重復(fù)執(zhí)行的結(jié)構(gòu),下面這篇文章主要給大家介紹了關(guān)于python基礎(chǔ)之while循環(huán)、for循環(huán)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04
如何通過神經(jīng)網(wǎng)絡(luò)實現(xiàn)線性回歸的擬合
這篇文章主要介紹了如何通過神經(jīng)網(wǎng)絡(luò)實現(xiàn)線性回歸的擬合問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05
關(guān)于python之字典的嵌套,遞歸調(diào)用方法
今天小編就為大家分享一篇關(guān)于python之字典的嵌套,遞歸調(diào)用方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
使用Python編寫Linux系統(tǒng)守護(hù)進(jìn)程實例
這篇文章主要介紹了使用Python編寫Linux系統(tǒng)守護(hù)進(jìn)程實例,本文先是講解了什么是守護(hù)進(jìn)程,然后給出了一個Python語言的簡單實現(xiàn),需要的朋友可以參考下2015-02-02
python安裝cxOracle避坑總結(jié)不要直接pip install
這篇文章主要為大家介紹了python安裝cx_Oracle是遇到的一些問題的解決辦法的總結(jié),來幫大家避避坑有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步2021-10-10

