Flask之數據庫設置


4 數據庫

知識點

  • Flask-SQLALchemy安裝
  • 連接數據庫
  • 使用數據庫
  • 數據庫遷移
  • 郵件擴展

4.1 數據庫的設置

Web應用中普遍使用的是關系模型的數據庫,關系型數據庫把所有的數據都存儲在表中,表用來給應用的實體建模,表的列數是固定的,行數是可變的。它使用結構化的查詢語言。關系型數據庫的列定義了表中表示的實體的數據屬性。比如:商品表里有name、price、number等。 Flask本身不限定數據庫的選擇,你可以選擇SQL或NOSQL的任何一種。也可以選擇更方便的SQLALchemy,類似於Django的ORM。SQLALchemy實際上是對數據庫的抽象,讓開發者不用直接和SQL語句打交道,而是通過Python對象來操作數據庫,在舍棄一些性能開銷的同時,換來的是開發效率的較大提升。

SQLAlchemy是一個關系型數據庫框架,它提供了高層的ORM和底層的原生數據庫的操作。flask-sqlalchemy是一個簡化了SQLAlchemy操作的flask擴展。

數據庫安裝

安裝服務端

sudo apt-get install mysql-server

安裝客戶端

sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev

數據庫的基本命令

登錄數據庫

mysql -u root -p

創建數據庫,並設定編碼

create database <數據庫名> charset=utf8;

顯示所有數據庫

show databases;

 

在Flask中使用mysql數據庫,需要安裝一個flask-sqlalchemy的擴展。

pip install flask-sqlalchemy

要連接mysql數據庫,仍需要安裝flask-mysqldb

pip install flask-mysqldb

使用Flask-SQLAlchemy管理數據庫

使用Flask-SQLAlchemy擴展操作數據庫,首先需要建立數據庫連接。數據庫連接通過URL指定,而且程序使用的數據庫必須保存到Flask配置對象的SQLALCHEMY_DATABASE_URI鍵中。

對比下Django和Flask中的數據庫設置:

Django的數據庫設置:

Flask的數據庫設置:

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/test3'

常用的SQLAlchemy字段類型

類型名 python中類型 說明
Integer int 普通整數,一般是32位
SmallInteger int 取值范圍小的整數,一般是16位
BigInteger int或long 不限制精度的整數
Float float 浮點數
Numeric decimal.Decimal 普通整數,一般是32位
String str 變長字符串
Text str 變長字符串,對較長或不限長度的字符串做了優化
Unicode unicode 變長Unicode字符串
UnicodeText unicode 變長Unicode字符串,對較長或不限長度的字符串做了優化
Boolean bool 布爾值
Date datetime.date 時間
Time datetime.datetime 日期和時間
LargeBinary str 二進制文件

常用的SQLAlchemy列選項

選項名 說明
primary_key 如果為True,代表表的主鍵
unique 如果為True,代表這列不允許出現重復的值
index 如果為True,為這列創建索引,提高查詢效率
nullable 如果為True,允許有空值,如果為False,不允許有空值
default 為這列定義默認值

常用的SQLAlchemy關系選項

選項名 說明
backref 在關系的另一模型中添加反向引用
primary join 明確指定兩個模型之間使用的聯結條件
uselist 如果為False,不使用列表,而使用標量值
order_by 指定關系中記錄的排序方式
secondary 指定多對多中記錄的排序方式
secondary join 在SQLAlchemy中無法自行決定時,指定多對多關系中的二級聯結條件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM