一、安裝flask-sqlalchemy
pipenv install flask-sqlalchemy
補充下:
下邊配置選項中用到數據庫驅動,我用的是cymsql,所以需要下載cymysql數據庫驅動
pipenv install cymysql
二、配置選項
在配置文件中,爲鏈接mysql數據庫做必須的配置
# 數據庫連接配置,必須的,格式爲(數據庫+數據庫驅動://數據庫用戶名:密碼@數據庫主機地址:端口號/數據庫名稱)
my_config={
"MYSQL":"mysql",
"CYMSQL":"cymysql",
"ACCOUNT":"root",
"PASSWORD":123456,
"ADDRESS":"localhost",
"PORT":3306,
"DATABASENAME":"test"
}
SQLALCHEMY_DATABASE_URI = "{MYSQL}+{CYMSQL}://{ACCOUNT}:{PASSWORD}@{ADDRESS}:{PORT}/{DATABASENAME}".format(**my_config)
SQLALCHEMY_TRACK_MODIFICATIONS = True #爲True時,flask-sqlalchemy會跟蹤對象的修改
選項 | 說明 |
---|---|
SQLALCHEMY_DATABASE_URI | 用於連接的數據庫 URI 。例如 mysql+cymysql://root:123@localhost:3306/test |
SQLALCHEMY_TRACK_MODIFICATIONS = True | 爲True時,flask-sqlalchemy會跟蹤對象的修改 |
三、初始化
from flask import Flask
from flask_sqlalchemy import SQLAlchemy # 引入SQLAlchemy類
app = Flask(__name__)
app.config.from_object('setting.my_config') # 引入數據庫連接配置(我的是在setting文件夾下的my_comfig配置文件中)
db = SQLAlchemy(app) #實例化 SQLAlchemy,創建一個數據庫實例,爲下邊模型提供一個基類,以及一些輔助類、輔助函數,可用於定義模型的結構
四、創建模型
# db.Model 創建模型
# db.Column 創建模型屬性
class Book(db.Model): # 讓Book 繼承基類的模型
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
username = db.Column(db.String(20),nullable=False)
userpassword = db.Column(db.String(20),nullable=False)
# Integer 整數類型
# primary_key 是否爲主鍵
# autoincrement 是否遞增
# String 字符串類型
# nullable 是否允許爲空
常見的一些模型屬性類型:
類型名 | Python類型 | 說明 |
---|---|---|
Integer | int | 普通整數,一般是 32 位 |
SmallInteger | int | 取值範圍小的整數,一般是 16 位 |
Big Integer | int 或 long | 不限制精度的整數 |
Float | float | 浮點數 |
Numeric | decimal.Decimal | 定點數 |
String | str | 變長字符串 |
Text | str | 變長字符串,對較長或不限長度的字符串做了優化 |
Unicode | unicode | 變長 Unicode 字符串 |
Unicode Text | unicode | 變長 Unicode 字符串,對較長或不限長度的字符串做了優化 |
Boolean | bool | 布爾值 |
Date | datetime.date | 日期 |
Time | datetime.time | 時間 |
DateTime | datetime.datetime | 日期和時間 |
Interval | datetime.timedelta | 時間間隔 |
Enum | str | 一組字符串 |
PickleType | 任何 Python 對象 | 自動使用 Pickle 序列化 |
LargeBinary | str | 二進制文件 |
常見的SQLAlchemy列(Column)中的選項:
選項名 | 說明 |
---|---|
primary_key | 如果設爲 True,這列就是表的主鍵( 通常我們會把id定義爲主鍵,並且是autoincrement=True遞增模式 ) |
unique | 如果設爲 True,這列不允許出現重複的值 |
index | 如果設爲 True,爲這列創建索引,提升查詢效率 |
nullable | 如果設爲 True,這列允許使用空值;如果設爲 False,這列不允許使用空值 |
default |
爲這列定義默認值 |
autoincrement | 如果設爲 True,表示遞增模式 |
五、把創建的模型映射到數據庫中去
# 把創建的模型映射到執行數據庫中去,這樣就ok了,此刻,
# 刷新數據庫,會看到上邊的數據表已經成功映射到mysql數據庫中了!!!
db.create_all(app=app)
六、下邊是一個完整的是例子
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object('setting.my_config')
db = SQLAlchemy(app)
class Book(db.Model):
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
username = db.Column(db.String(20),nullable=False)
userpassword = db.Column(db.String(20),nullable=False)
db.create_all(app=app)
# 配置文件 setting/my_comfig.py
DEBUG=True
my_config={
"MYSQL":"mysql",
"CYMSQL":"cymysql",
"ACCOUNT":"root",
"PASSWORD":123456,
"ADDRESS":"localhost",
"PORT":3306,
"DATABASENAME":"test"
}
SQLALCHEMY_DATABASE_URI = "{MYSQL}+{CYMSQL}://{ACCOUNT}:{PASSWORD}@{ADDRESS}:{PORT}/{DATABASENAME}".format(**my_config)
SQLALCHEMY_TRACK_MODIFICATIONS = True
下邊本想繼續記錄操作數據庫的一些方法,但是文章有點長,下一篇文章詳細記錄下 數據庫的增刪改查。。。