flask 上面我們可以輕鬆的使用 SQLAlchemy 進行 SQL 資料庫的串接,不用直接跑 SQL 指令的原因大家都有自己的一套說法,我自己的原因是因為我們可能會遷移不同的資料庫供應商這時候程式就會需要一些細微的調整。如果是 SQLAlchemy 這種用 ORM 的方式進行撰寫就比較沒有這樣的問題
讓我們開始吧
這次的流程主要是這樣:
- 載入 SQLAlchemy
- 進行 sqlite 連線
- 宣告一個資料表模型
- 建構資料表
載入的語法是這樣
from flask_sqlalchemy import SQLAlchemy
接著進行資料的連線
用 sqlite 會比較好說明,下面的用法就是在根目錄下直接建一個 db.db
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///db.db"
db = SQLAlchemy(app)
接下來就是宣告資料表模型了
我們一張表一個 class 來處理
class User(db.Model):
id = db.Column(db.Integer,primary_key=True)
username = db.Column(db.String)
email = db.Column(db.String)
class Member(db.Model):
id = db.Column(db.Integer,primary_key=True)
memberId = db.Column(db.String)
稍微解釋一下,上面的 User 這個 class 就是宣告裡面有三個column分別是 id,username,email
而 Member 中會有 id,memberId 這兩個 column
先別急!最後還要補上執行建立資料表的動作,這個動作屬於一次性的行為他會先確認資料表有沒有存在,如果沒有存在才會執行。所以不會影響到既有的資料表
db.create_all()
這樣一來,執行程式的時候就會去確認有沒有資料表,如果沒有資料表就直接建構
完整的 Code 如下:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# 連線資料庫
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///db.db"
db = SQLAlchemy(app)
# 資料表 User
class User(db.Model):
id = db.Column(db.Integer,primary_key=True)
username = db.Column(db.String)
email = db.Column(db.String)
# 資料表 Member
class Member(db.Model):
id = db.Column(db.Integer,primary_key=True)
memberId = db.Column(db.String)
# 建構資料表
db.create_all()
@app.route('/')
def hello_world():
return 'hello haha Flask Dockerized'
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0', port=8888)
留言
張貼留言