Flask框架(flask中的資料庫SQLAlchemy(python3),配置、模型類、建立表)
1. SQLAlchemy是一個關係型資料庫框架,
它提供了高層的ORM和底層的原生資料庫的操作。
flask-sqlalchemy是一個簡化了SQLAlchemy操作的flask擴充套件。
2. 安裝
環境 python3.6 + window10 + pycharm
pip install flask-sqlalchemy
pip install mysql-connector # 安裝驅動 (不安裝的話會報出警告)
如果用的虛擬環境,記得安裝在虛擬環境當中
3. sqlalchemy的常用配置
(1) app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+mysqlconnector://root:[email protected]
:3306/test'# 後面字串的解釋 mysql+mysqlconnector://使用者名稱:密碼@127.0.0.1:3306/資料庫名
一般IP和埠都是 127.0.0.1:5000
( 2) app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
# True 讓資料庫裡面的資料和模型資料庫裡面的資料保持一致
(3) #查詢時會顯示原始SQL語句
app.config['SQLALCHEMY_ECHO'] = True
4. 建立模型類:
模型類; 建立資料庫模型類(繼承 sqlalchemy 工具物件中的Model類),
一個模型類對應一張模型表
資料庫表名的常見規範:
(1) 資料庫名縮寫_表名 (2) tbl_表名
建立模型類時常用的SQLAlchemy欄位型別 :
建立模型類時常用的SQLAlchemy列選項 :
建立模型類時常用的SQLAlchemy關係選項:
5. 建立所有的表: db.drop_all()
刪除所有的表: db.create_all()
注意: db是 db = SQLAlchemy(app) # 建立資料庫 sqlalchemy 工具物件
6. 建立一個使用者表和使用者身份表,並做好設定,執行程式,沒有報錯 即建立成功,或者自己也可以在程式完成之後
print("建立成功"),,看下面的程式
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
class Config(object):
"""配置引數"""
'''sqlalchemy的配置引數'''
SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://root:[email protected]:3306/db_python"
'''設定sqlalchemy自動跟蹤資料庫'''
SQLALCHEMY_TRACK_MODIFICATIONS = True
# 設定引數
app.config.from_object(Config)
'''建立資料庫 sqlalchemy 工具物件'''
db = SQLAlchemy(app)
"""
建立資料庫模型類(繼承 sqlalchemy 工具物件中的Model類),一個模型類對應一張模型表
資料庫表名的常見規範:
(1) 資料庫名縮寫_表名 (2) tbl_表名
"""
class Role(db.Model):
"""使用者身份表"""
__tablename__ = "tbl_roles"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(32), unique=True)
'''
relationship()把兩個表關聯在一起,不新增也是可以的,根據自己的需求
backref : 在關係的另一模型中新增反向引用
相當於給要關聯的表新增一個role屬性
不新增也是可以的,根據自己的需求
'''
user = db.relationship("User", backref="role") # 從模型類中
class User(db.Model):
"""使用者表"""
__tablename__ = "tbl_users" # 指明資料庫的表名
id = db.Column(db.Integer, primary_key=True) # 整型的主鍵,會預設設定為自增主鍵
name = db.Column(db.String(64), unique=True)
email = db.Column(db.String(128), unique=True)
password = db.Column(db.String(128))
role_id = db.Column(db.Integer, db.ForeignKey("tbl_roles.id")) # 從底層中
if __name__ == '__main__':
'''清除資料庫中的所有資料'''
db.drop_all()
'''建立所有表'''
db.create_all()
然後在資料庫中,就可以看見,建立好的表,如下圖:
這個就直接把模型類即模型表就建立好了