Python的轻量级ORM框架peewee使用教程
作者:极客网 发布时间:2021-09-01 06:55:21
标签:python,ORM框架,peewee
ORM框架使用最广泛的就是SQLAlchemy和Django自带的ORM框架,但是SQLAlchemy的语法显然相对Django的ORM框架麻烦一点。
而Django本身是一个web框架,比较重量级,仅仅为了使用Django的ORM框架的功能,而安装Django有点导致系统臃肿。而peewee这个框架语法几乎与Django的ORM框架一致,而又非常轻量。
它的安装非常简单:
pip install peewee
如果你在使用mysql数据库的过程中报出如下错误:
peewee.ImproperlyConfigured: MySQL driver not installed!
则需要安装一个mysql的驱动:
pip install pymysql
peewee的whl包是880kB,pymysql的whl包是51KB,非常轻量级。
peewee的官方文档地址:http://docs.peewee-orm.com/en/latest/index.html
下面测试一下各项功能:
from peewee import *
db = MySQLDatabase('test', host="localhost", user='root', passwd='123456', port=3306)
# 定义Person
class Person(Model):
name = CharField()
birthday = DateField()
is_relative = BooleanField()
class Meta:
database = db
def test_create():
Person.create_table()
# 创建多张表也可以这样
# database.create_tables([Person])
def test_insert():
# 添加一条数据
p = Person(name='小华', birthday=date(1996, 12, 20), is_relative=True)
p.save()
def test_delete():
# 删除姓名为perter的数据
Person.delete().where(Person.name == 'perter').execute()
# 已经实例化的数据, 使用delete_instance
p = Person(name='小华', birthday=date(1996, 12, 20), is_relative=False)
p.id = 1
p.save()
p.delete_instance()
def test_update():
# 已经实例化的数据,指定了id这个primary key,则此时保存就是更新数据
p = Person(name='小华', birthday=date(1996, 12, 20), is_relative=False)
p.id = 1
p.save()
# 更新birthday数据
q = Person.update({Person.birthday: date(1983, 12, 21)}).where(Person.name == '小华')
q.execute()
def test_query():
# 查询单条数据
p = Person.get(Person.name == '小华')
print(p.name, p.birthday, p.is_relative)
# 使用where().get()查询
p = Person.select().where(Person.name == '小华').get()
print(p.name, p.birthday, p.is_relative)
# 查询多条数据
persons = Person.select().where(Person.is_relative == True)
for p in persons:
print(p.name, p.birthday, p.is_relative)
下面测试一个各个方法。
测试创建表:
if __name__=="__main__":
Person.create_table()
执行完毕,检查数据库成功创建下面这张表:
测试插入数据:
if __name__=="__main__":
p = Person(name='小华', birthday=date(1996, 12, 20), is_relative=True)
p.save()
执行完毕后,表数据多了一行:
测试查询数据:
if __name__=="__main__":
p = Person.get(Person.name == '小华')
print(p.name, p.birthday, p.is_relative)
结果:
小华 1996-12-20 True
测试删除数据:
if __name__=="__main__":
Person.delete().where(Person.name == '小华').execute()
执行后,数据库对应的记录被删除:
测试修改数据:
if __name__ == "__main__":
p = Person(name='小新', birthday=date(1995, 6, 20), is_relative=False)
p.save()
# 更新birthday数据
q = Person.update({Person.birthday: date(1983, 5, 21)}).where(Person.name == '小新')
q.execute()
测试批量查询:
if __name__ == "__main__":
for i in range(1, 5):
p = Person(name=f'小张{i}', birthday=date(1995, 6, 20), is_relative=False)
p.save()
# 查询多条数据
persons = Person.select().where(Person.is_relative == False)
for p in persons:
print(p.name, p.birthday, p.is_relative)
来源:https://www.geek521.com/2021/02/04/python%E7%9A%84%E8%BD%BB%E9%87%8F%E7%BA%A7orm%E6%A1%86%E6%9E%B6peewee/


猜你喜欢
- python可以返回多个值,确实挺方便函数里的return只能返回一个值,但是返回类型是没是限制的因此,我们可以“返回一个 tuple类型,
- 问题如下python pip安装模块提示错误failed to create process原因:报这个错误的原因,是因为python的目录
- 1. 什么是阻塞队列?阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会
- 作者:Lachlan Hunt概要网络是不断的进化的. 新的和有创意的网站每天都在出现, 从各方面都在冲击着HTML的边界. HTML 4来
- 一直都在网上抄别人写的电话,邮箱正则表达式,今天稍微有点闲情,把一直想自己写个这样的表达式的心愿给完成:/** * 邮箱地址正则表
- 本文实例为大家分享了pygame实现贪吃蛇小游戏的具体代码,供大家参考,具体内容如下由于这段时间实在是太聊了,没什么事做,游戏也玩腻了,所以
- 正在看的ORACLE教程是:Oracle Index 的三个问题。索引( Index )是常见的数据库对象,它的设置好坏
- 这是一个很简单的纯CSS相册滑动浏览效果,仅用一个无序列表ul结合简单的CSS就可以实现。原文中介绍的纵向滑动相册的实现方法,但是相比之下个
- 引言“深入认识Python内建类型”这部分的内容会从源码角度为大家介绍Python中各种常用的内建类
- Anaconda是一个和Canopy类似的科学计算环境,但用起来更加方便。自带的包管理器conda也很强大。首先是下载安装。Anaconda
- 关于Variable和Tensor旧版本的Pytorch中,Variable是对Tensor的一个封装;在Pytorch大于v0.4的版本后
- 准备必须环境:Python3开始先实现一个简单的版本,直接上代码:import urllib.requestimport urllib.er
- 前言最近做了几个简单的爬虫python程序,于是就想做个窗口看看效果。首先是,窗口的话,以前没怎么接触过,就先考虑用Qt制作简单的ui。这里
- 这篇文章主要介绍了微信小程序顶部导航栏可滑动并选中放大,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- 复数数据结构在 cpython 当中对于复数的数据结构实现如下所示:typedef struct { double
- Python 3 利用 Dlib 19.7 实现摄像头人脸检测特征点标定0.引言利用python开发,借助Dlib库捕获摄像头中的人脸,进行
- 来源:Chinaasp 之所以翻译这篇文章,是因为目前关于CGI安全性的文章都是拿Perl作为例子,而专门介绍ASP,PHP或者JSP安全性
- 前言通常我们的python代码都是遵循PEP8的规范化格式,目的是为了保持代码的一致性、可读性。,这里给大家推荐几个常用的静态代码检查工具,
- 我在程序中加入了分数显示,三种特殊食物,将贪吃蛇的游戏逻辑写到了SnakeGame的类中,而不是在Snake类中。特殊食物:1.绿色:普通,
- 你一定想下载一下感兴趣的网页,以便慢慢欣赏吧!利用FrontPage能够轻松做到这一点,甚至可以下载整个站点,当然这里只能下载静态的页面。启