博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flask从入门到精通之模型定义
阅读量:5238 次
发布时间:2019-06-14

本文共 1668 字,大约阅读时间需要 5 分钟。

  模型这个术语表示程序使用的持久化实体。在ORM 中,模型一般是一个Python 类,类中的属性对应数据库表中的列。

  Flask-SQLAlchemy 创建的数据库实例为模型提供了一个基类以及一系列辅助类和辅助函数,可用于定义模型的结构。下面的实例中分别定义rules和users的模型:

class Role(db.Model):    __tablename__ = 'roles'    id = db.column(db.Integer,primary_key = True)    name = db.Column(db.String(64),unique=True)    def __repr__(self):        return '
' % self.nameclass User(db.Model): __tablename__ = 'users' id = db.column(db.Integer,primary_key = True) name = db.Column(db.String(64),unique=True) def __repr__(self): return '
' % self.name

  类变量__tablename__ 定义在数据库中使用的表名。如果没有定义__tablename__,Flask-SQLAlchemy 会使用一个默认名字,但默认的表名没有遵守使用复数形式进行命名的约定,所以最好由我们自己来指定表名。其余的类变量都是该模型的属性,被定义为db.Column类的实例。

  db.Column 类构造函数的第一个参数是数据库列和模型属性的类型。下表列出了一些可用的列类型以及在模型中使用的Python 类型。

类型名 Python类型 说明
Integer int 普通整数,一般是32 位
SmallInteger int 取值范围小的整数,一般是16 位
BigInteger int或则long 不限制精度的整数
Float float 浮点数
Numeric decimal.Decimal 定点数
String   str 变长字符串
Text str 变长字符串,对较长或不限长度的字符串做了优化
Unicode unicode 变长Unicode 字符串
UnicodeText unicode 变长Unicode 字符串,对较长或不限长度的字符串做了优化
Boolean bool 布尔值
Date datetime.date 日期
Time datetime.time 时间
DateTime datetime.datetime 日期和时间
Interval datetime.timedelta 时间间隔
Enum str 一组字符串
PickleType 任何Pyhton对象 自动使用Pickle 序列化
LargeBinary str 二进制文件

  db.Column 中其余的参数指定属性的配置选项。下表 列出了一些可用选项。

选项名 说明
primary_key 如果设为True,这列就是表的主键
unique 如果设为True,这列不允许出现重复的值
index 如果设为True,为这列创建索引,提升查询效率
nullable 如果设为True,这列允许使用空值;如果设为False,这列不允许使用空值
default 为这列定义默认值

  Flask-SQLAlchemy 要求每个模型都要定义主键,这一列经常命名为id。

  虽然没有强制要求,但这两个模型都定义了__repr()__ 方法,返回一个具有可读性的字符串表示模型,可在调试和测试时使用

转载于:https://www.cnblogs.com/senlinyang/p/8378632.html

你可能感兴趣的文章
UVA11374 Airport Express
查看>>
P1373 小a和uim之大逃离 四维dp,维护差值
查看>>
NOIP2015 运输计划 树上差分+树剖
查看>>
P3950 部落冲突 树链剖分
查看>>
读书_2019年
查看>>
读书汇总贴
查看>>
微信小程序 movable-view组件应用:可拖动悬浮框_返回首页
查看>>
MPT树详解
查看>>
空间分析开源库GEOS
查看>>
RQNOJ八月赛
查看>>
前端各种mate积累
查看>>
jQuery 1.7 发布了
查看>>
Python(软件目录结构规范)
查看>>
Windows多线程入门のCreateThread与_beginthreadex本质区别(转)
查看>>
Nginx配置文件(nginx.conf)配置详解1
查看>>
linux php编译安装
查看>>
name phone email正则表达式
查看>>
721. Accounts Merge
查看>>
「Unity」委托 将方法作为参数传递
查看>>
重置GNOME-TERMINAL
查看>>