iT邦幫忙

2022 iThome 鐵人賽

DAY 14
1
自我挑戰組

30天玩轉規劃LINE BOT系列 第 14

第14天:規劃資料庫(三)

  • 分享至 

  • xImage
  •  

接下來,規劃會員資料庫
在Pycharm的2022ironmanedwardbot專案下建立一個資料夾。
https://ithelp.ithome.com.tw/upload/images/20220929/20144761NjVG0oYkQD.png

然後我們將其命名為models。
https://ithelp.ithome.com.tw/upload/images/20220929/20144761t7meuXX8rA.png

接著就在這資料夾內建立一個python檔案
https://ithelp.ithome.com.tw/upload/images/20220929/20144761NHZF7tu9ve.png

名字就取名為User
https://ithelp.ithome.com.tw/upload/images/20220929/201447611Qif63Pibz.png

就來開始在這定義用戶的模型。
要從extensions匯入db以及datetime的模組。
所以輸入以下:
from extensions import db
import datetime

並定義一個class為User即我們的用戶模組,這是繼承SQLALCHEMY的MODEL,這在資料庫的資料表名稱會是user,所以設定tablename為user,而這個table我這設定五欄,每一欄位都需要分別設定名稱,分別是ID、Line_ID、display_name、picture_url、created_on。
所以輸入以下內容,內容上也分別定義欄位的格式,詳細關於SQL我另外做一期來介紹:

class User(db.Model):
tablename = 'user'

id = db.Column(db.Integer, primary_key=True)
line_id = db.Column(db.String(50), unique=True).
display_name = db.Column(db.String(255)) 
picture_url = db.Column(db.String(255)) 
created_on = db.Column(db.DateTime, default=datetime.datetime.now()) 

==========

再來定義物件初始化設定,透過定義init方法,設定當建立新的USER物件時需要給的資料,有Line_ID、display_name、picture_url,這三項初始參數。
self就是指物件本身,所以就會設定self的Line_ID等於丟入的Line_ID、self的display_name等於丟入的display_name、self的picture_url等於丟入的picture_url
那程式就這樣編寫

def init(self, line_id, display_name, picture_url):
self.line_id=line_id
self.display_name=display_name
self.picture_url=picture_url

回到主程式app.py,將剛剛定義好的user model匯入進去,從models的user匯入User。
程式碼:
from models.user import User

在來要使用套件flask-migrate建立用戶資料表,可透過這套件來更新資料庫的架構,所以就需要安裝flask-migrate這套件,一樣是從Terminal來安裝。
進入Terminal 輸入:
pip install Flask-Migrate

完成安裝後,回到extensions.py
規劃從flask_migrate中匯入Migrate,並建立Migrate的物件,輸入程式碼:
from flask_migrate import Migrate
migrate = Migrate()

然後回到 app.py
在原本程式碼from extensions import db 添加匯入migrate,所以改成:
from extensions import db, migrate
再來添加:
migrate.init_app(app, db)
利用migrate.init方法將flask_app與db丟入進行初始化

接下來在Terminal 輸入flask db init 進行初始化。
跑完之後會在專案中建立出一個migrations的資料夾。
然後下指令flask db migrate後面加上備註初始化資料庫,所以輸入:
flask db migrate -m "Initial migration"
完成之後就可以在 versions的資料夾看到一個檔案,裡面就記錄了資料庫的版本,有升級與降級的程式碼。
https://ithelp.ithome.com.tw/upload/images/20220929/20144761h5zHRvOQHs.png

最後輸入 flask db upgrade。
然後回到資料庫中,可以看到剛剛設定的資料表形式已經顯現在SQL中。
https://ithelp.ithome.com.tw/upload/images/20220929/20144761DVfK8G6CZ5.png

下一篇,開始利用資料庫存用戶資料


上一篇
第13天:規劃資料庫(二)
下一篇
第15天:規劃資料庫(四)
系列文
30天玩轉規劃LINE BOT30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
arguskao
iT邦新手 4 級 ‧ 2022-12-20 09:50:59

這一段看得有點暈

我要留言

立即登入留言