使用flask-sqlalchemy操作mysql數據庫

一、安裝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 

下邊本想繼續記錄操作數據庫的一些方法,但是文章有點長,下一篇文章詳細記錄下 數據庫的增刪改查。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章