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 |