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的简单使用的更多相关文章

  1. 从零起步 系统入门Python爬虫工程师 ✌✌

    从零起步 系统入门Python爬虫工程师 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 大数据时代,python爬虫工程师人才猛增,本课程专为爬虫工程师打造, ...

  2. [Python]peewee使用经验

    peewee 使用经验 本文使用案例是基于 python2.7 实现 以下内容均为个人使用 peewee 的经验和遇到的坑,不会涉及过多的基本操作.所以,没有使用过 peewee,可以先阅读文档 正确 ...

  3. Python ORM框架之 Peewee入门

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

  4. Python:轻量级 ORM 框架 peewee 用法详解(二)——增删改查

    说明:peewee 中有很多方法是延时执行的,需要调用 execute() 方法使其执行.下文中不再特意说明这个问题,大家看代码. 本文中代码样例所使用的 Person 模型如下: class Per ...

  5. [Python]peewee 使用经验

    peewee 使用经验 本文使用案例是基于 python2.7 实现 以下内容均为个人使用 peewee 的经验和遇到的坑,不会涉及过多的基本操作.所以,没有使用过 peewee,可以先阅读文档 正确 ...

  6. peewee 通俗易懂版

    Peewee作为Python ORM之一 优势:简单,小巧,易学习,使用直观 不足之处:需要手动创建数据库 基本使用流程 1⃣️根据需求定义好Model(表结构类) 2⃣️通过create_table ...

  7. peewee基本操作

    本文将简单的介绍Peewee,一览它的主要特点,主要涉及到: 模型定义 存储数据 检索数据 注意:如果你偏爱稍微高级一点的教程, peewee建立类似twitter应用 是一篇结合Flask框架与pe ...

  8. Python: Flask框架简单介绍

    接触Python之后我第一次听说Flask,我就根据自己搜罗的知识尽可能简洁的说出来.如果不准确的地方还请指正,谢谢. Flask是什么?             Flask是基于Python编写的微 ...

  9. SQLAlchemy 简单笔记

    ORM 江湖##### 曾几何时,程序员因为惧怕SQL而在开发的时候小心翼翼的写着sql,心中总是少不了恐慌,万一不小心sql语句出错,搞坏了数据库怎么办?又或者为了获取一些数据,什么内外左右连接,函 ...

随机推荐

  1. CondenseNet:可学习分组卷积,原作对DenseNet的轻量化改造 | CVPR 2018

    CondenseNet特点在于可学习分组卷积的提出,结合训练过程进行剪枝,不仅能准确地剪枝,还能继续训练,使网络权重更平滑,是个很不错的工作   来源:晓飞的算法工程笔记 公众号 论文:Neural ...

  2. Spring中异步注解@Async的使用、原理及使用时可能导致的问题

    前言 其实最近都在研究事务相关的内容,之所以写这么一篇文章是因为前面写了一篇关于循环依赖的文章: <面试必杀技,讲一讲Spring中的循环依赖> 然后,很多同学碰到了下面这个问题,添加了S ...

  3. 17 个 Python 特别实用的操作技巧,记得收藏!

    Python 是一门非常优美的语言,其简洁易用令人不得不感概人生苦短.在本文中,作者 Gautham Santhosh 带我们回顾了 17 个非常有用的 Python 技巧,例如查找.分割和合并列表等 ...

  4. python-socket网络编程笔记(UDP+TCP)

    端口 在linux系统中,有65536(2的16次方)个端口,分为: 知名端口(Well Known Ports):0-1023,如80端口分配给HTTP服务,21端口分配给FTP服务. 动态端口(D ...

  5. 题解 UVA1608 【不无聊的序列 Non-boring sequences】

    思路: 算法很显然: 一.在区间\([l,r]\)找到一个只出现一次的元素P(如果不存在,那么序列\(boring\)) 二.递归处理区间\([l,p-1]\)和区间\([p+1,r]\). 其关键在 ...

  6. 遇到的spring问题,或许需要下载新的java jdk

    org.springframework.context.support.AbstractApplicationContext

  7. Python(set/list/dict/tuple)

    set集合:set是一个无序,不重复元素的集合.可嵌套列表,字典(可以for循环或者迭代的对象). ######差集: a={11,22} b={22,33} c=a.difference(b) #a ...

  8. Python os.fstat() 方法

    概述 os.fstat() 方法用于返回文件描述符fd的状态,类似 stat().高佣联盟 www.cgewang.com Unix,Windows上可用. fstat 方法返回的结构: st_dev ...

  9. SparkSQL & Spark on Hive & Hive on Spark

    刚开始接触Spark被Hive在Spark中的作用搞得云里雾里,这里简要介绍下,备忘. 参考:https://blog.csdn.net/zuochang_liu/article/details/82 ...

  10. 精通python网络爬虫PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书

    点击获取书籍提取码:yc9w