peewee的简单使用
peewee的简单使用
peewee是一个轻量级的ORM框架,peewee完全可以应对个人或企业的中小型项目的Model层,上手容易,功能强大。
一、安装peewee模块
使用pip命令工具安装peewee库
pip install peewee
二、链接数据库并建表
以mysql为例(peewee提供mysql,postgresql,sqllite)的支持。
from peewee import *
# test 指的数据库名称,host 指 MySql 主机地址,port 指 MySql 端口,user 用户名,password 密码
db = MySQLDatabase('test', host='127.0.0.1', port=3306, user='root', password='123456')
class BaseModel(Model):
class Meta:
database = db # 将实体与数据库进行绑定
# 继承自 BaseModel,直接关联 db,并且也继承了 Model,Model 提供增删改查的函数
class Person(BaseModel):
name = CharField(verbose_name='姓名', max_length=10, null=False, index=True)
passwd = CharField(verbose_name='密码', max_length=20, null=False, default='111111')
gender = IntegerField(verbose_name='性别', null=False, default=1)
is_admin = BooleanField(verbose_name='是否是管理员', default=False)
if __name__ == "__main__":
# 查询数据库是否连接
db.is_closed()
# 连接数据库
db.connect()
# 创建table
Person.create_table()
下面附上mysql的截图:

三、全部数据类型
| Field Type | Sqlite | Postgresql | MySql |
|---|---|---|---|
IntegerField |
integer | integer | integer |
BigIntegerField |
integer | bigint | bigint |
SmallIntegerField |
integer | smallint | smallint |
AutoField |
integer | serial | integer |
FloatField |
real | real | real |
DoubleField |
real | double precision | double precision |
DecimalField |
decimal | numeric | numeric |
CharField |
varchar | varchar | varchar |
FixedCharField |
char | char | char |
TextField |
text | text | longtext |
BlobField |
blob | bytea | blob |
BitField |
integer | bigint | bigint |
BigBitField |
blob | bytea | blob |
UUIDField |
text | uuid | varchar(40) |
DateTimeField |
datetime | timestamp | datetime |
DateField |
date | date | date |
TimeField |
time | time | time |
TimestampField |
integer | integer | integer |
IPField |
integer | bigint | bigint |
BooleanField |
integer | boolean | bool |
BareField |
untyped | not supported | not supported |
ForeignKeyField |
integer | integer | integer |
四、增删改查
新增数据
Model.create 向数据库中插入一条记录,并返回一个新的实例。
if __name__ == "__main__":
p = Person.create(name="bobby", passwd="12345")
修改数据
if __name__ == "__main__" :
p = Person.create(name="bobby", email="123@321")
p = Person.get(name='bobby')
p.passwd = '999999'
# 将修改后的数据进行存库
p.save()
修改某条数据应该先获取到该数据,使用get()函数,赋值给引用变量进行修改,save()函数保存。不过get()方法只能查询一条,通过这种方法只能修改一条数据,且是第一条满足条件的数据。
查找数据
单个查找:
和修改数据中的方法相同。
p = Person.select().where(Person.name == 'bobby').get()
多个查找:
Ps = Person.select()通过select函数可以获取所有数据。
if __name__ == "__main__":
ps = Person.select()
print(type(ps)) # <class 'peewee.ModelSelect'>
print(ps[0]) # 1
print(type(ps[0])) # <Model: Person>
for item in ps:
print(item.name) # bobby
使用 filter()函数
if __name__ == "__main__":
ps = Person.filter(name='bobby')
for item in ps:
print(item.name) # bobby
以上的查询方式适用于比较简单的sql查询,如果查询语句十分复杂,且是多表关联就不是很灵活了。
删除数据
删除一条:
if __name__ == "__main__":
p = Person.get(name='bobby')
p.delete_instance()
删除多条:
if __name__ == "__main__":
Person.delete().where(Person.name=='bobby').execute()
peewee 中有很多方法是延时执行多,需要调用 excute() 方法使其执行。
peewee的简单使用的更多相关文章
- 从零起步 系统入门Python爬虫工程师 ✌✌
从零起步 系统入门Python爬虫工程师 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 大数据时代,python爬虫工程师人才猛增,本课程专为爬虫工程师打造, ...
- [Python]peewee使用经验
peewee 使用经验 本文使用案例是基于 python2.7 实现 以下内容均为个人使用 peewee 的经验和遇到的坑,不会涉及过多的基本操作.所以,没有使用过 peewee,可以先阅读文档 正确 ...
- Python ORM框架之 Peewee入门
之前在学Django时,发现它的模型层非常好用,把对数据库的操作映射成对类.对象的操作,避免了我们直接写在Web项目中SQL语句,当时想,如果这个模型层可以独立出来使用就好了,那我们平台操作数据库也可 ...
- Python:轻量级 ORM 框架 peewee 用法详解(二)——增删改查
说明:peewee 中有很多方法是延时执行的,需要调用 execute() 方法使其执行.下文中不再特意说明这个问题,大家看代码. 本文中代码样例所使用的 Person 模型如下: class Per ...
- [Python]peewee 使用经验
peewee 使用经验 本文使用案例是基于 python2.7 实现 以下内容均为个人使用 peewee 的经验和遇到的坑,不会涉及过多的基本操作.所以,没有使用过 peewee,可以先阅读文档 正确 ...
- peewee 通俗易懂版
Peewee作为Python ORM之一 优势:简单,小巧,易学习,使用直观 不足之处:需要手动创建数据库 基本使用流程 1⃣️根据需求定义好Model(表结构类) 2⃣️通过create_table ...
- peewee基本操作
本文将简单的介绍Peewee,一览它的主要特点,主要涉及到: 模型定义 存储数据 检索数据 注意:如果你偏爱稍微高级一点的教程, peewee建立类似twitter应用 是一篇结合Flask框架与pe ...
- Python: Flask框架简单介绍
接触Python之后我第一次听说Flask,我就根据自己搜罗的知识尽可能简洁的说出来.如果不准确的地方还请指正,谢谢. Flask是什么? Flask是基于Python编写的微 ...
- SQLAlchemy 简单笔记
ORM 江湖##### 曾几何时,程序员因为惧怕SQL而在开发的时候小心翼翼的写着sql,心中总是少不了恐慌,万一不小心sql语句出错,搞坏了数据库怎么办?又或者为了获取一些数据,什么内外左右连接,函 ...
随机推荐
- python多进程之multiprocessing
什么是多进程? 简单的理解:单板上运行的一个程序就是一个进程.进程是操作系统分配资源的最小单位,不同的进程之间资源不共享,进程间通信需要使用特定的方式.python提供了自带的multiprocess ...
- STL源码剖析:关联式容器
AVL树 AVL树定义:红黑树是一颗二叉搜索树,特别的是一棵保持高度平衡的二叉搜索树 AVL树特点: 每个结点的左右子树的高度之差的绝对值(平衡因子)最多为1 AVL树插入: 说明:新增节点的平衡因子 ...
- C++语法小记---少见的语法之一
很少用,列出来,便于理解和熟悉!!! // 1.单独使用位域限定符 ::xxx() //调用全局函数xxx // 2.全局重载new和delete T* tmp = (T*)(::operator n ...
- java并发编程[持续更新]
目录 java并发编程 1.常用类介绍 Semaphore 2.名词解释 2.1 线程安全 2.2 可重入锁和不可重入锁 java并发编程 1.常用类介绍 Semaphore Semaphore 类是 ...
- javascript中的设计模式之发布-订阅模式
一.定义 又叫观察者模式,他定义对象间的依照那个一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将的到通知.在javascript中,我们一般用时间模型来替代传统的发布-订阅模式 二 ...
- Dart语言之 异步支持
Dart类库有非常多的返回Future或者Stream对象的函数. 这些函数被称为异步函数:它们只会在设置好一些耗时操作之后返回,比如像 IO操作.而不是等到这个操作完成. async和await关键 ...
- assemble、compile、make、build和rebuild的关系
assemble:打包(之前已经编译了源文件)compile.make.build和rebuild都是编译过程:将源代码转换为可执行代码的过程,Java的编译会将java编译为class文件,将非ja ...
- 关于简单的数据双向绑定原理,defineProperty 和Proxy演示
双向绑定,也就是说js中的数据传到页面,页面中的内容到js,实现同步更新,简单的演示可以直接复制下放HTML代码运行. 在这个例子中,我们使用defineProperty ,Object.define ...
- Go 中读取命令参数的几种方法总结
前言 对于一名初学者来说,想要尽快熟悉 Go 语言特性,所以以操作式的学习方法为主,比如编写一个简单的数学计算器,读取命令行参数,进行数学运算. 本文讲述使用三种方式讲述 Go 语言如何接受命令行参数 ...
- reverse 字符串翻转
头文件 algorithm string s="hello"; reverse(s.begin(),s.end()); char c[]="hello"; re ...