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. 實體類:根據數據庫中的表結構而創建出來的類(模型類,實體類)
- 語法
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()
- MODELNAME:定義模型類的名稱,可以根據表名而設定
- TABLENAME:映射到數據庫中表名
- COMLUMN_NAME:屬性名,映射到數據庫就是列名
- TYPE:映射到列的數據類型
- OPTIONS:列選項
- 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 | 日期和時間類型 |
- 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)
終端執行: