python-轻量级ORM库peewee的使用

简介: python-轻量级ORM库peewee的使用


简介

比较小巧的ORM,支持

  • sqlite
  • mysql
  • postgresql
  • cockroachdb

数据库及表创建

自行创建数据库

CREATE DATABASE peewee_learn

创建与删除表

import datetime
from peewee import MySQLDatabase,Model, CharField, TextField, IntegerField,BooleanField,DateTimeField,UUIDField
my_db = MySQLDatabase(
    'peewee_learn',
    user='root',
    password='123456',
    host='192.168.31.100',
    port=3306
)
class BaseModel(Model):
    id = UUIDField(primary_key=True)
    time = DateTimeField(formats='%Y-%m-%d %H:%M:%S',default=datetime.datetime.now())
    class Meta:
        database = my_db
class Users(BaseModel):
    name=CharField(max_length=20)
    age=IntegerField(null=True)
    gender=BooleanField()
    desc=TextField()
    class Meta:
        db_table = "users"
def create_tables(db,models):
    db.connect()
    db.create_tables(models,safe=True)
def drop_tables(db,models):
    db.connect()
    db.drop_tables(models,safe=True)
if __name__ == '__main__':
    my_models = [Users]
    create_tables(my_db,my_models)
    # drop_tables(my_db,my_models)

IntegerField()对应的是int类型

CharField()对应的是varchar

DateTimeField()对应的是datetime类型

BooleanField()对应的是tinyint(1)类型

基本操作

def insert(model,**value):
    try:
        o = model()
        for k,v in value.items():
            setattr(o,k,v)
        o.save()
    except Exception as e:
        print(e)
def insert_many(db,model,values:List):
    try:
        with db.atomic():
            q = model.insert_many(values)
            q.execute()
    except Exception as e:
        print(e)

# 查询所有
    users = Users.select()
    print([u.name for u in users])
    # 按条件查询
    users = Users.select().where(Users.age==18)
    print([u.name for u in users])
    # 排序
    users = Users.select().order_by(Users.age)
    print([u.name for u in users])
    # 函数使用
    cnt = Users.select(fn.Count(Users.id).alias("cnt"))
    print([u.name for u in users])

users = Users.select().where(Users.age==18)
    u = users[0]
    u.name='liwu'
    u.save()

# 删除
    users = Users.select().where(Users.age == 20)
    u = users[0]
    u.delete_instance()

全部代码

from typing import List
import uuid
from peeweetest.models import my_db,Users
from peewee import fn
def insert(model,**value):
    try:
        o = model()
        for k,v in value.items():
            setattr(o,k,v)
        o.save()
    except Exception as e:
        print(e)
def insert_many(db,model,values:List):
    try:
        with db.atomic():
            q = model.insert_many(values)
            q.execute()
    except Exception as e:
        print(e)
if __name__ == '__main__':
    # insert test
    zhangsan = {
        "id": uuid.uuid4(),
        "name": "three",
        "age": 18,
        "gender": True,
        "desc": "test for insert"
    }
    # insert(Users,name="four",age=18,gender=True,desc="test for insert")
    # insert_many test
    lisi={
        "id": uuid.uuid4(),
        "name": "four",
        "age": 20,
        "gender": False,
        "desc": "test for insert many"
    }
    insert_many(my_db,Users,[zhangsan,lisi])
    # 查询所有
    users = Users.select()
    print([u.name for u in users])
    # 按条件查询
    users = Users.select().where(Users.age==18)
    print([u.name for u in users])
    # 排序
    users = Users.select().order_by(Users.age)
    print("sql:",users)
    print([u.name for u in users])
    # 函数使用
    cnt = Users.select(fn.Count(Users.id).alias("cnt"))
    print([u.name for u in users])
    # 修改
    users = Users.select().where(Users.age==18)
    u = users[0]
    u.name='liwu'
    u.save()
    # 删除
    users = Users.select().where(Users.age == 20)
    u = users[0]
    u.delete_instance()

select的太多,无法列举,可以看看文档,打印出sql语句

参考

github-peewee

peewee-docs

相关文章
|
4天前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
29 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
28天前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
106 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
1月前
|
关系型数据库 API 数据库
Python流行orm框架对比
Python中有多个流行的ORM框架,如SQLAlchemy、Django ORM、Peewee、Tortoise ORM、Pony ORM、SQLModel和GINO。每个框架各有特点,适用于不同的项目需求。SQLAlchemy功能强大且灵活,适合复杂项目;Django ORM与Django框架无缝集成,易用性强;Peewee轻量级且简单,适合小型项目;Tortoise ORM专为异步框架设计;Pony ORM查询语法直观;SQLModel结合Pydantic,适合FastAPI;GINO则适合异步环境开发。初学者推荐使用Django ORM或Peewee,因其易学易用。
|
1月前
|
机器学习/深度学习 存储 数据挖掘
Python图像处理实用指南:PIL库的多样化应用
本文介绍Python中PIL库在图像处理中的多样化应用,涵盖裁剪、调整大小、旋转、模糊、锐化、亮度和对比度调整、翻转、压缩及添加滤镜等操作。通过具体代码示例,展示如何轻松实现这些功能,帮助读者掌握高效图像处理技术,适用于图片美化、数据分析及机器学习等领域。
73 20
|
2月前
|
XML JSON 数据库
Python的标准库
Python的标准库
185 77
|
2月前
|
XML JSON 数据库
Python的标准库
Python的标准库
71 11
|
2月前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
105 8
|
2月前
|
安全 API 文件存储
Yagmail邮件发送库:如何用Python实现自动化邮件营销?
本文详细介绍了如何使用Yagmail库实现自动化邮件营销。Yagmail是一个简洁强大的Python库,能简化邮件发送流程,支持文本、HTML邮件及附件发送,适用于数字营销场景。文章涵盖了Yagmail的基本使用、高级功能、案例分析及最佳实践,帮助读者轻松上手。
88 4
|
3月前
|
人工智能 API 开发工具
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
吴恩达发布的开源Python库aisuite,提供了一个统一的接口来调用多个大型语言模型(LLM)服务。支持包括OpenAI、Anthropic、Azure等在内的11个模型平台,简化了多模型管理和测试的工作,促进了人工智能技术的应用和发展。
226 1
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
|
3月前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
198 4
数据分析的 10 个最佳 Python 库

热门文章

最新文章

推荐镜像

更多