Table
一. 前言
1. 什麼是 Flask-SQLAlchemy ?
- Flask 本身不支援直接對資料庫操作,而 Flask-SQLAlchemy 是 Flask 的擴充套件,是為了簡化 Flask 開發人員操作資料庫而出現的套件,它適度的包裝了SQLAlchemy。
2. 為什麼使用 Flask-SQLAlchemy ?
- 可支援市面上常用的資料庫 sqlite、Mysql、PostgreSQL、MSSql、Oracle
- 可以使用原生 SQL下指令,也同時支援 ORM 框架來操作資料庫,可以隨時切換很方便。
參考官方文件:
二. 進入 Flask-SQLAlchemy 世界
1. 安裝
1.1 如何安裝 Flask-SQLAlchemy
- 安裝 flask-sqlalchemy 的時候會自動下載相依套件 sqlachemy,不用特別另外安裝。
1 |
pip install flask-sqlalchemy |
1.2 如何載入 Flask-SQLAlchemy
1 |
from flask_sqlalchemy import SQLAlchemy |
2. 進行資料庫連線測試
接下來會介紹幾種 Flask-SQLAlchemy 與不同資料庫連線的方式,再切換資料庫上,只需要針對 app.config['SQLALCHEMY_DATABASE_URI']
設定即可!
1 |
app.config['SQLALCHEMY_DATABASE_URI'] = [DB_TYPE]+[DB_CONNECTOR]://[USERNAME]:[PASSWORD]@[HOST]:[PORT]/[DB_NAME] |
方法一 :使用 sqlite 資料庫連線
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# main.py from flask_sqlalchemy import SQLAlchemy from flask import Flask db = SQLAlchemy() app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:////tmp/test.db" db.init_app(app) @app.route('/create_db') def index(): db.create_all() return 'ok' if __name__ == "__main__": app.run() |
方法二 :使用 MySQL 資料庫連線
如果使用 MySQL 當連線的資料庫,需要額外安裝 pymsql,安裝指令如下:
1 |
$ pip3 install pymysql |
連線參數設定: 'SQLALCHEMY_DATABASE_URI'
為與資料庫連線的參數設定,其中 user_name、password 和 IP 請填入自己 Mysql 的資料,而 db_name 則是填入的 database 名稱。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# main.py from flask_sqlalchemy import SQLAlchemy from flask import Flask db = SQLAlchemy() app = Flask(__name__) app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://user_name:password@IP:3306/db_name" db.init_app(app) @app.route('/') def index(): sql_cmd = """ select * from product """ query_data = db.engine.execute(sql_cmd) print(query_data) return 'ok' if __name__ == "__main__": app.run() |
方法三 :使用 PostgreSQL 資料庫連線
如果使用 PostgreSQL 當連線的資料庫,需要額外安裝 psycopg2,安裝指令如下:
1 |
$ pip3 install psycopg2-binary |
安裝好後,使用方法和剛剛相同,只需針對 app.config['SQLALCHEMY_DATABASE_URI']
內的 url,去做修改就可以囉!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# main.py from flask_sqlalchemy import SQLAlchemy from flask import Flask db = SQLAlchemy() app = Flask(__name__) app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config['SQLALCHEMY_DATABASE_URI'] = "postgresql://user_name:password@IP:5432/db_name" db.init_app(app) @app.route('/') def index(): sql_cmd = """ select * from product """ query_data = db.engine.execute(sql_cmd) print(query_data) return 'ok' if __name__ == "__main__": app.run() |
3. 運行 python
最後運行 python3 main.py,如過沒有噴錯就代表資料庫連線成功囉~
如果有任何問題,歡迎底下留言或分享唷!
關於 Flask 教學的延伸閱讀:
▍關於 Flask 教學系列目錄:
▍關於 Flask 資料庫 SQLAlchemy 文章:
- [Flask教學] Flask-SQLAlchemy 資料庫連線&設定入門 (一)
- [Flask教學] Flask-SQLAlchemy 資料庫操作-ORM篇 (二)
- [Flask教學] Flask-SQLAlchemy -ORM 一對多關聯篇 (三)
- [Flask教學] Flask-SQLAlchemy -ORM 多對多關聯篇 (四)
- [Flask教學] Flask-SQLAlchemy 資料庫操作-SQL指令篇 (五)
[Flask教學] Flask-SQLAlchemy 資料庫連線&設定入門 結束囉,感謝收看!
有關 Max行銷誌 的最新文章,都會發佈在 Max行銷誌的 Facebook 粉絲專頁,如果想看最新更新,還請您按讚或是追蹤唷!
在〈[Flask教學] Flask-SQLAlchemy 資料庫連線&設定入門(一)〉中有 2 則留言
WARNING: This is a development server. Do not use it in a production deployment.
我跑出來這個錯誤,請問是哪裡出錯了
嗨嗨 Yuhi,
可以參考這篇有提到,這不是錯誤只是警示喲
https://www.maxlist.xyz/2020/04/30/flask-helloworld/
留言功能已關閉。