SQLAlchemy的使用

SQLAlchemy的使用

1. Flask中配置數據庫

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
# # 使用pymysql替代MySQLdb
# import pymysql
# pymysql.install_as_MySQLdb()

#1. 創建flask應用
app = Flask(__name__)

#2. 配置flask數據庫URI信息
# app.config['SQLALCHEMY_DATABASE_URI']="mysql://用戶名:密碼@數據庫服務器地址:端口號/數據庫名"
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:123456@localhost:3306/blog"

#取消SQLAlchemy的信號追蹤
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

#3.生成父類數據庫映射模型
db = SQLAlchemy(app)

if __name__ == "__main__":
    app.run(debug=True)

2.數據庫實體類創建

1. 實體類:根據數據庫中的表結構而創建出來的類(模型類,實體類)

  1. 語法
	class MODELNAME(db.Model):
		__tablename__="TABLENAME"
		COLUMN_NAME = db.Column(db.TYPE,OPTIONS)

示例:

#創建數據庫實體類
class Users(db.Model):
    __tablename__ = "users"
    id = db.Column(db.Integer,primary_key=True)
    username = db.Column(db.String(80),unique=True,index=True)
    age = db.Column(db.Integer,nullable=True)

# 將創建的實體類映射到數據庫,生成表,只有數據庫中表不存在纔會創建
db.create_all()

#刪除所有數據表
#db.drop_all()
  1. MODELNAME:定義模型類的名稱,可以根據表名而設定
  2. TABLENAME:映射到數據庫中表名
  3. COMLUMN_NAME:屬性名,映射到數據庫就是列名
  4. TYPE:映射到列的數據類型
  5. OPTIONS:列選項
  6. db.TYPE 列類型如下:
類型名 python類型 說明
Integer int 普通整數,32位
SmallInteger int 小範圍整數,16位
BigInteger int或long 不限精度整數
Float float 浮點數
Numeric decimal.Decimal 定點數
String str 字符串
Text str 字符串
Boolean bool 布爾值
Date datetime.date 日期類型
Time datetime.time 時間類型
DateTime datetime.datetime 日期和時間類型
  1. OPTIONS 列選項
選項名 說明
autoincrement 如果設置爲True表示該列自增長
primary_key 如果設置爲True表示該列爲主鍵
unique 如果設置爲True表示該列值唯一
index 如果設置爲True表示該列加索引
nullable 如果設置爲True表示該列可爲空
default 指定該列的默認值

注:如果列的類型是整數並且是主鍵,則默認自增長
如果一個列中要包含多個列選項,使用 ‘,’ 隔開即可
列選項 與 列類型之間使用 ‘,’ 隔開的

2. 數據庫遷移

安裝:flask-script
安裝:flask-migrate

from flask_script import Manager
from flask_migrate import Migrate,MigrateCommand

#創建Manager對象管理flask應用
manager = Manager(app)

#創建Migrate對象並關聯app和db
migrate = Migrate(app,db)

#爲manager添加執行數據庫數據庫遷移命令
manager.add_command("db",MigrateCommand)

終端執行:

  1. python3 xxx.py db init
    作用:做一些項目和數據庫的初始化操作
    特點:一個項目中,只執行一次即可
  2. python3 xxx.py db migrate
    作用:將編輯好的實體類生成中間文件並保存在migrations文件夾中
    特點:只要檢測到實體類有更改,就會生成中間文件
  3. python3 xxx.py db upgrade
    作用:將中間文件映射回數據庫
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章