1、 flask sqlalchemy 集成的兩種方式
# 1、 通過flask app初始化
from flask_sqlalchemy import SQLAlchemy
flask_db = SQLAlchemy()
from flask import Flask
app = Flask(__name__)
app.config.from_object('flaskconfig')
flask_db.init_app(app)
#flask_db db操作
# 2、 通過flask app初始化
from flask_sqlalchemy import SQLAlchemy
from flask import Flask
app = Flask(__name__)
flask_db = SQLAlchemy(app)
#flask_db db操作
2、 通過flask-sqlacodegen命令,從數據庫結構生成model類文件
1) 命令執行
cmd = "flask-sqlacodegen --outfile models.py --flask "+ MYSQL_DATABASE_URI
os.system(cmd)
2) 文件查看
from sqlalchemy import BigInteger, Column, DateTime, String
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class TcDemo(db.Model):
__tablename__ = 'tc_demo'
id = db.Column(db.BigInteger, primary_key=True, info='ID')
name = db.Column(db.String(100, 'utf8_general_ci'), nullable=False, unique=True, info='名稱')
desc = db.Column(_db.String(200), info='描述')
create_time = db.Column(db.DateTime, nullable=False)
update_time = db.Column(db.DateTime, nullable=False)
從以上文件可以注意一些點:
#1 文件類名,是數據庫表的 tc_demo以駝峯方式轉成的 TcDemo
#2 數據庫字段類型對應關係,參見附錄表1
#3 數據庫特殊關鍵詞約束對應關係,參見附錄表2
MYSQL類型名 | python中類型 | 說明 |
---|---|---|
Integer | int | 普通整數,一般是32位 |
SmallInteger | int | 取值範圍小的整數,一般是16位 |
BigInteger | int或long | 不限制精度的整數 |
Float | float | 浮點數 |
Numeric | decimal.Decimal | decimal.Decimal |
String | str | 變長字符串 |
Text | str | 變長字符串,對較長或不限長度的字符串做了優化 |
Unicode | unicode | 變長Unicode字符串 |
UnicodeText | unicode | 變長Unicode字符串,對較長或不限長度的字符串做了優化 |
Boolean | bool | 布爾值 |
Date | datetime.date | 時間 |
Time | datetime.datetime | 日期和時間 |
LargeBinary | str | 二進制文件 |
來源: https://blog.csdn.net/weixin_41896508/article/details/80772238 |
選項名 | 說明 |
primary_key | 如果爲True,代表表的主鍵;缺省爲False |
unique |
如果爲True,代表這列不允許出現重複的值 注: 索引導出的model類也會設置這個屬性 |
index |
如果爲True,爲這列創建索引,提高查詢效率 注: 數據庫表字段有索引時,不會自動變成index屬性 |
nullable | 如果爲True,允許有空值,如果爲False,不允許有空值 |
default | 爲這列定義默認值 |
來源: https://blog.csdn.net/weixin_41896508/article/details/80772238 |