1. 程式人生 > >Flask框架(flask中的資料庫SQLAlchemy(python3),配置、模型類、建立表)

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()

 然後在資料庫中,就可以看見,建立好的表,如下圖:

這個就直接把模型類即模型表就建立好了