python-flask-sqlalchemy

 

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

 

常用的SQLAlchemy字段類型 - 表1
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  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

常用的SQLAlchemy列選項 - 表2
選項名 說明
primary_key 如果爲True,代表表的主鍵;缺省爲False
unique

如果爲True,代表這列不允許出現重複的值

注: 索引導出的model類也會設置這個屬性

index

如果爲True,爲這列創建索引,提高查詢效率

注: 數據庫表字段有索引時,不會自動變成index屬性

nullable 如果爲True,允許有空值,如果爲False,不允許有空值
default 爲這列定義默認值
來源: https://blog.csdn.net/weixin_41896508/article/details/80772238 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章