ORM的好處:可以讓我們操作資料庫跟操作物件是一樣的,非常方便,因為一個表就抽象成一個類,一條資料就抽象成該類的一個物件,
一、初始化
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_config(config)
db = SQLAlchemy(app)
其中,config為組態檔
SQLALCHEMY_DATABASE_URI = ('mysql+pymysql://'+MYSQL['user']+':'+MYSQL['password']+'@'+MYSQL['host']+'/'+MYSQL['db'])
SQLALCHEMY_POOL_SIZE = 1
SQLALCHEMY_TRACK_MODIFICATIONS = False
SECRET_KEY = os.environ.get('SECRET_KEY') or '10086'
二、db物件產生之后,使用db物件創建模型與表的映射,
模型需要繼承自db.Model,然后需要映射到表中的屬性,必須寫成db.Column的資料型別,
資料型別:
db.Integer代表的是整形.
db.String代表的是varchar,需要指定最長的長度.
db.Text代表的是text.
其他引數:
primary_key:代表的是將這個欄位設定為主鍵,
autoincrement:代表的是這個主鍵為自增長的,
nullable:代表的是這個欄位是否為空,默認可以為空,可以將這個值設定為False,在資料庫中,這個值就不能為空了,
index:是否設定為索引
創建User類,作為博客用戶,
class User(db.Model):
__tablename__ = 'usertable' #如果不指定表名,會默認以這個類名的小寫為表名
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(32), index=True, unique=True)
email = db.Column(db.String(255), index=True, unique=True)
password = db.Column(db.String(32))
permission = db.Column(db.Integer())
accept_email = db.Column(db.Boolean(), default=False)
register_time = db.Column(db.DateTime())
def __repr__(self): # 方便查看列印輸出結果
return '<User {}>'.format(self.name)
def set_password(self, password): # 生成密碼
self.password = generate_password_hash(password)
def check_password(self, password): # 檢查密碼
return check_password_hash(self.password, password)
三、增、刪、改、查
#根據用戶名查找.filter_by 表內部精確查詢
user = User.query.filter_by(name=username).first()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/107507.html
標籤:Python
上一篇:PHP bcpow BC數學函式
下一篇:Python干貨整理之資料結構篇
