我的環境:
Windows10 + Python3.7 + Flask 1.0.2 + Pycharm 2018.2.3 Professional
前言:找了很多關於 flask_sqlalchemy
的教程都是針對python2.x
的,我自己在python3
環境下使用出現了各種問題,以下是摸索出的可行方案。
摘要
- 配置URI連接MySQL數據庫
- 在MySQL中建立一張表
1.配置URI
通過下述語句配置數據庫URI
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://<用戶名>:<密碼>@<數據庫服務器地址>[:<端口>]/<數據庫名稱>[?<編碼方式>]
說明:
- pymysql是數據庫驅動名稱,經我自己使用情況下只有這個驅動能用,mysqldb無法成功連接;另:在
flask_sqlalchemy
中無需單獨使用pip命令安裝就可以直接使用 - 在本機下使用默認情況下數據庫服務器地址就填
localhost
或者127.0.0.1
MySQL默認端口爲3306
不填此項則爲默認值 - 編碼方式推薦使用UTF8,Python3默認編碼也是UTF8,此項填入
charset=utf8
即可(注意不是utf-8
,加-
會報錯)
我的配置如下
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:3699@localhost/mydb?charset=utf8'
2. 使用flask_sqlalchemy
中的ORM建立一張表
百度百科定義ORM如下
對象關係映射(英語:(Object Relational Mapping,簡稱ORM,或O/RM,或O/R mapping)是一種程序技術,用於實現面向對象編程語言裏不同類型系統的數據之間的轉換
暫時沒有去詳細探究這個技術,目前能成功使用就好
我的理解如下:
這個概念在flask_sqlalchemy
中意思大概就是說把數據庫中的各種數據模型與flask_sqlalchemy
中定義的數據模型(主要是各種類)進行對應
- 數據庫模型映射
在配製好數據庫URI後需要在Python中創建數據庫對象,使用如下語句,即可將數據庫與flask app綁定在配製好數據庫URI後需要在Python中創建數據庫對象,使用如下語句,即可將數據庫與flask app綁定
db = SQLAlchemy(app)
- 數據表模型映射
假設要建立一張表article
,需要定義一個繼承於db.Model
的類:
class Article(db.Model)
然後在這個類裏面設置這張表的表頭等信息
- 表名:
__tablename__ = 'article'
- 各個列:
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
title = db.Column(db.String(100), nullable=False)
content = db.Column(db.Text, nullable=False)
最後用create_all()
方法建表
db.create_all()
通過命令行進入MySQL可以看見表已經生成
3.全部源碼如下
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:3699@localhost/mydb?charset=utf8'
db = SQLAlchemy(app)
class Article(db.Model):
__tablename__ = 'article'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
title = db.Column(db.String(100), nullable=False)
content = db.Column(db.Text, nullable=False)
db.create_all()
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()