Flask中之數據庫框架和模型類一
阿新 • • 發佈:2018-09-09
進行 default elf down val prim 序列 浮點 nic Python數據庫框架
# pip install flask-sqlalchemy**** 數據庫引擎 URL MySQL mysql://username:password@hostname/database Postgres postgresql://username:password@hostname/database SQLite(Unix) sqlite:////absolute/path/to/database SQLite(Windows) sqlite:///c:/absolute/path/to/database # 在這些 URL 中,hostname 表示 MySQL 服務所在的主機,可以是本地主機(localhost), # 也可以是遠程服務器。數據庫服務器上可以托管多個數據庫,因此 database 表示要使用的 # 數據庫名。如果數據庫需要進行認證,username 和 password 表示數據庫用戶密令。
# 示例 hello.py:配置數據庫 from flask.ext.sqlalchemy import SQLAlchemy basedir = os.path.abspath(os.path.dirname(__file__)) app = Flask(__name__) app.config[‘SQLALCHEMY_DATABASE_URI‘] = ‘sqlite:///‘ + os.path.join(basedir, ‘data.sqlite‘) app.config[‘SQLALCHEMY_COMMIT_ON_TEARDOWN‘] = True db = SQLAlchemy(app) # db 對象是 SQLAlchemy 類的實例,表示程序使用的數據庫,同時還獲得了 Flask-SQLAlchemy # 提供的所有功能。
# 定義模型
示例 5-2 hello.py:定義 Role 和 User 模型 class Role(db.Model): __tablename__ = ‘roles‘ id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(64), unique=True) def __repr__(self): return ‘<Role %r>‘ % self.name class User(db.Model): __tablename__ = ‘users‘ id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64), unique=True, index=True) def __repr__(self): return ‘<User %r>‘ % self.username # 類變量 __tablename__ 定義在數據庫中使用的表名。 # 如果沒有定義 __tablename__,Flask-SQLAlchemy 會使用一個默認名字, # 但默認的表名沒有遵守使用復數形式進行命名的約定, # 所以最好由我們自己來指定表名。其余的類變量都是該模型的屬性,被定義為# db.Column # 類的實例。 # db.Column 類構造函數的第一個參數是數據庫列和模型屬性的類型。
類型名 Python類型 說 明
Integer int 普通整數, 一般是 32 位
SmallInteger int 取值範圍小的整數 一般是 16 位
BigInteger int 或 long 不限制精度的整數
Float float 浮點數
Numeric decimal.Decimal 定點數
String str 變長字符串
Text str 變長字符串,對較長或不限長度的字符串做了優化
Unicode unicode 變長 Unicode 字符串
UnicodeText unicode 對較長或不限長度的字符串做了優化
Boolean bool 布爾值
Date datetime.date 日期
Time datetime.time 時間
DateTime datetime.datetime 日期和時間
Interval datetime.timedelta 時間間隔
Enum str 一 組字符串
PickleType 任何 Python 對象 自動使用 Pickle 序列化
LargeBinary str 二進制文件
# 最常使用的SQLAlchemy列選項,也即約束條件
primary_key 如果設為 True,這列就是表的主鍵
unique 如果設為 True,這列不允許出現重復的值
index 如果設為 True,為這列創建索引,提升查詢效率
nullable 如果設為 True,這列允許使用空值;如果設為 False,這列不允許使用空值
default 為這列定義默認值
doc 字段說明
# Flask-SQLAlchemy 要求每個模型都要定義主鍵,這一列經常命名為 id。
Flask中之數據庫框架和模型類一