Flask框架(flask-sqlalchemy操作,Migrate作用,Flask遷移數據庫,Flaks同步表數據)

[toc]
## 一:flask-sqlalchemy操作

```python
flask-sqlalchemy : 讓flask更好的集成sqlalchemy
flask_migrate :類似於django的makemigrations和migrate,因爲sqlalchemy不支持表修改(刪除,增加字段)
```

### 1.引入:

```python
1.在開發過程中,需要修改數據庫模型,而且還要在修改之後更新數據庫。最直接的方式就是刪除舊錶,但這樣會丟失數據。

2.更好的解決辦法是使用數據庫遷移框架,它可以追蹤數據庫模式的變化,然後把變動應用到數據庫中。
```

### 2.Flask-Migrate擴展

```python
1.在Flask中可以使用Flask-Migrate擴展,來實現數據遷移。並且集成到Flask-Script中,所有操作通過命令就能完成。

2.爲了導出數據庫遷移命令,Flask-Migrate提供了一個MigrateCommand類,可以附加到flask-script的manager對象上。
```

### 3.flask-sqlalchemy與slask_migrate作用

```python
flask-sqlalchemy : 讓flask更好的集成sqlalchemy

flask_migrate :類似於django的makemigrations和migrate,因爲sqlalchemy不支持表修改(刪除,增加字段)
```

### 4.flask-migrate初始化與遷移數據庫介紹

```python
python3 manage.py db init 初始化:項目開始只執行一次(生成migrations文件夾)
python3 manage.py db migrate 等同於 makemigartions(models模型層,增刪改記錄)
python3 manage.py db upgrade 等同於migrate(同步記錄到models模型層內)
```

### 5.flask-sqlalchemy 操作遷移數據庫

```python
# 1.先導入,實例化得到一個對象
from flask_sqlalchemy import SQLAlchemy
# 2.生成db對象
db = SQLAlchemy()
# 3.所有表模型都繼承 db.Model
# 4.在視圖函數中查詢那個session對象
db.session
```

### 6.導出項目依賴

```python
# 安裝:pip3 install pipreqs
#導出:pipreqs . --encoding=utf8
```

 

## 二:Flask-Migrate的作用

#### 負責表結構同步

```python
db.create_all 方法,同步表結構,create_all方法只能夠對新增模型進行同步,如果模型發生修改,不能夠同步

flask-migrate可以對發生變更的模型進行同步
```

### (一) 安裝插件

```python
pip install flask-migrate
```

### (二)使用

##### 1、實例化

![img](https:////upload-images.jianshu.io/upload_images/24465517-d24fe168e91aec42.png?imageMogr2/auto-orient/strip|imageView2/2/w/990/format/webp)

實例化步驟

##### 2、添加命令

![img](https:////upload-images.jianshu.io/upload_images/24465517-a0ac4bd3881fce5a.png?imageMogr2/auto-orient/strip|imageView2/2/w/997/format/webp)

添加migrate命令

### (三) 同步表結構

##### 1、init 初始化,只需執行一次

![img](https:////upload-images.jianshu.io/upload_images/24465517-4e6ed2da1f4f70c2.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)

初始號操作

##### 2、migrate--將模型的變更生成遷移文件

![img](https:////upload-images.jianshu.io/upload_images/24465517-7896807e8583eda5.png?imageMogr2/auto-orient/strip|imageView2/2/w/1011/format/webp)

生成遷移文件

##### 3、upgrade

執行生成的文件,同步到表結構中

```python
python main.py db upgrade
```

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