首先,需要理清一下python数据与数据库数据是怎么对应的:

  • Model类:表
  • Field类:表上的列的类型
  • Model实例:表上的一行数据

1. Model Class主要描述的是数据表以及其继承的顺序

这里主要是需要对Model类中的Meta类的定义规范进行小结:

  1. 当Meta类建立后,不应该通过mymodel.Meta来进行访问,而应该使用mymodel._meta, 这是一个ModelOption类的实例, 可以通过它获取model和Meta的一些属性
  2. Meta的可用属性有:

    除了db_tabletable_alias之外,其他的字段均可以被继承
    可以看到,peewee的主键,索引和其他约束均可以在meta中定义。
  3. 主键的定义
class mymodel1(Model):name = CharField(max_length=200, primary_key=True) #将该字段设为主键class mymodel2(Model):name = CharField(max_length=200)Meta:# 如果要不使用主键primary_key = Falseclass mymodel3(Model):blog = ForeignKeyField(Blog)tag = ForeignKeyField(Tag)class Meta:primary_key = CompositeKey('blog', 'tag') # primary_key实际上是CompositeKey的一个实例

非整型的主键
当主键为非auto_increment时,插入数据调用save()会出错,应该调用save(force_insert=True)

  1. 添加索引
    单列索引
    多列索引

2. Field Class主要描述python数据类型与数据库数据类型的对应关系和数据表之间的关系(外键,多对多)

Filed在peewee.py中有基本数据类型的定义
# 初始化函数,各个字段的默认值
def __init__(self, null=False, index=False, unique=False,verbose_name=None, help_text=None, db_column=None,default=None, choices=None, primary_key=False, sequence=None,constraints=None, schema=None)

在playhouse.fields中定义的额外字段

包括

    PasswordFieldManyToManyFieldCompressedFieldPickledFieldAESEncryptedField

然而peewee中并不推荐使用这些Field, 例如ManyToManyField,完全可以用一个含两个外键的关系表来维护,ManyToMany关系在ORM中实际上也正是这样来实现的,并且使用这种方式可以描述更加复杂的关系。

自定义field字段
# 1. 定义MyField类
class MyField(Field):# Field的标签db_field = 'my'# 返回数据库类型的值def db_value(value):pass# 返回python类型的值def python_value(value):pass# 2. 将自定义Field子类与数据表中的列关联,有两种方法:
#     1. 创建数据库时,给fields字段赋值
db = MySQLDatabase('my_db', fields={'my': 'my'})
#     2. 调用register_fields函数
db.register_fields({'my':'my'})

python ORM 模块peewee(三): Model的建立相关推荐

  1. 【Python问题】Python 导入模块的三种方式ModuleNotFoundError: No module named ‘模块名‘

    Python 导入模块的三种方式ModuleNotFoundError: No module named '模块名' 问题 一.Python解释器查找模块文件的过程. 二.解决方法 记录一下 大家可以 ...

  2. Python ORM框架peewee

    文章目录 简介 安装 初试 表的创建和插入数据 INSERT INTO ... VALUES (...) 表的删除 DROP TABLE 表的更新 ALTER TABLE 表的查询 SELECT .. ...

  3. python导入模块的三种方法,例子: import numpy和from numpy import * (import matplotlib 和 from matplotlib import *)

    python导入模块有如下几种写法:以matplotlib为例 (跟numpy是一样的) 1,import matplotlib #整个导入matplotlib 2 , from matplotlib ...

  4. Python ORM之peewee模块

    由于peewee用起来比较简单 ,  所以了解了一下 以Python内置的数据库SQLite为例 python3.7版本 1 import peewee 2 conn = peewee.SqliteD ...

  5. 【ORM框架】Python ORM框架——peewee(详细)

    文章目录 前言 一.peewee的安装和入门 1.字段类型表&Meta类型表&类型属性表 字段类型表 Meta类型表 类型属性表 2.设计表结构 防止连接丢失 二.表的设计&操 ...

  6. Python random 模块 - Python零基础入门教程

    目录 一.Python random 模块常用函数介绍 二.Python random 模块使用 三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Pyt ...

  7. Python sys模块 - Python零基础入门教程

    目录 一.Python sys 模块简介 二.Python sys 模块使用 三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 在 ...

  8. Python ORM框架之 Peewee入门

    之前在学Django时,发现它的模型层非常好用,把对数据库的操作映射成对类.对象的操作,避免了我们直接写在Web项目中SQL语句,当时想,如果这个模型层可以独立出来使用就好了,那我们平台操作数据库也可 ...

  9. Python轻量级ORM框架——peewee

    这里写目录标题 Python中常用的ORM框架 peewee使用经验 从数据库中导出模型 查询 统计类查询 优化子查询 参考文章 Python中常用的ORM框架 SQLALchemy:重量级框架,适合 ...

  10. 中文自然语言处理(NLP)(三)运用python jieba模块计算知识点当中关键词的词频

    前两次链接:中文自然语言处理(NLP)(一)python jieba模块的初步使用       中文自然语言处理(NLP)(二)python jieba模块的进一步学习和xlrd模块 续上次的随笔之后 ...

最新文章

  1. 作为一名合格的JAVA程序员需要点亮那些技能树
  2. Leecode 301. 删除无效的括号——Leecode每日一题系列
  3. MyBatis(三)
  4. 我大学期间看的好书推荐
  5. 将指定excel的一列数据提取到另一个excel的指定列
  6. MongoDB 数据迁移 备份 导入(自用)
  7. c# 十六进制转为字节_如何在C#中将具有十六进制内容的字节数组转换为具有十进制的字符串...
  8. 计算机视觉CV:图像处理面试题
  9. mysql left join右边有多条_left join 右表多条数据重复
  10. ppt设置外观样式_ppt设置主题样式的方法步骤详解
  11. 数字图像处理课程作业1-大米检测
  12. 计算机组策略没有权限,运行组策略或程序时提示没有权限
  13. php简单实现延迟队列
  14. 后端开发面试自我介绍_java工程师面试自我介绍范文
  15. arg min什么意思
  16. freemarker导出excel单元格内换行
  17. 视频号运营玩法;以及视频号引流变现赚钱。丨国仁网络资讯
  18. Linux系统调用详解(实现机制分析)--linux内核剖析(六)
  19. explicit的作用
  20. 大数据架构师之路-大数据框架大全

热门文章

  1. 超出部分点点点,并修改点点点颜色
  2. My Sixty-Second Page - 斐波那契数列 - By Nicolas
  3. Android强制系统横屏的原理和实现
  4. cocoa touch
  5. 求助,nodejs 在安装threads_a_gogo时报错
  6. 软件测试工程师必备技能
  7. 12 Best Custom ROMs for Android You Can Install
  8. IBM power小型机HMC管理口默认IP地址和ASMI默认密码
  9. 海康威视录像机刷linux系统,海康硬盘录像机怎么刷机?详尽图文刷机教程刷机工具亲测100%好用...
  10. Python爬虫-爬取开心网主页(有登录界面-利用cookie)