您好,登錄后才能下訂單哦!
Python數(shù)據(jù)庫框架
# pip install flask-sqlalchemy****
數(shù)據(jù)庫引擎 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),
# 也可以是遠程服務器。數(shù)據(jù)庫服務器上可以托管多個數(shù)據(jù)庫,因此 database 表示要使用的
# 數(shù)據(jù)庫名。如果數(shù)據(jù)庫需要進行認證,username 和 password 表示數(shù)據(jù)庫用戶密令。
# 示例 hello.py:配置數(shù)據(jù)庫
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 類的實例,表示程序使用的數(shù)據(jù)庫,同時還獲得了 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__ 定義在數(shù)據(jù)庫中使用的表名。
# 如果沒有定義 __tablename__,F(xiàn)lask-SQLAlchemy 會使用一個默認名字,
# 但默認的表名沒有遵守使用復數(shù)形式進行命名的約定,
# 所以最好由我們自己來指定表名。其余的類變量都是該模型的屬性,被定義為# db.Column
# 類的實例。
# db.Column 類構造函數(shù)的第一個參數(shù)是數(shù)據(jù)庫列和模型屬性的類型。
類型名 Python類型 說 明
Integer int 普通整數(shù), 一般是 32 位
SmallInteger int 取值范圍小的整數(shù) 一般是 16 位
BigInteger int 或 long 不限制精度的整數(shù)
Float float 浮點數(shù)
Numeric decimal.Decimal 定點數(shù)
String str 變長字符串
Text str 變長字符串,對較長或不限長度的字符串做了優(yōu)化
Unicode unicode 變長 Unicode 字符串
UnicodeText unicode 對較長或不限長度的字符串做了優(yōu)化
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,這列不允許出現(xiàn)重復的值
index 如果設為 True,為這列創(chuàng)建索引,提升查詢效率
nullable 如果設為 True,這列允許使用空值;如果設為 False,這列不允許使用空值
default 為這列定義默認值
doc 字段說明
# Flask-SQLAlchemy 要求每個模型都要定義主鍵,這一列經常命名為 id。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。