Python: PonyORM设计精巧的ORM框架

简介: Python: PonyORM设计精巧的ORM框架

Pony is an advanced object-relational mapper


文档:

安装

pip install pony

代码实例

# -*- coding: utf-8 -*-
from pony.orm import Database, db_session, Required, Set, select, set_sql_debug
# 创建数据库对象
db = Database()
# 建立数据库连接
db.bind(provider='sqlite', filename=':memory:')
# 开启debug,打印sql
set_sql_debug(True)
# 建立实体类
class Person(db.Entity):
    name = Required(str)
    age = Required(int)
    cars = Set('Car')
class Car(db.Entity):
    make = Required(str)
    model = Required(str)
    owner = Required(Person)
# 建表
db.generate_mapping(create_tables=True)
"""
CREATE TABLE "Person" (
  "id" INTEGER PRIMARY KEY AUTOINCREMENT,
  "name" TEXT NOT NULL,
  "age" INTEGER NOT NULL
)
CREATE TABLE "Car" (
  "id" INTEGER PRIMARY KEY AUTOINCREMENT,
  "make" TEXT NOT NULL,
  "model" TEXT NOT NULL,
  "owner" INTEGER NOT NULL REFERENCES "Person" ("id") ON DELETE CASCADE
)
SELECT "Car"."id", "Car"."make", "Car"."model", "Car"."owner"
FROM "Car" "Car"
WHERE 0 = 1
SELECT "Person"."id", "Person"."name", "Person"."age"
FROM "Person" "Person"
WHERE 0 = 1
"""
# 插入数据
with db_session:
    p1 = Person(name='John', age=20)
    p2 = Person(name='Mary', age=22)
    p3 = Person(name='Bob', age=30)
    c1 = Car(make='Toyota', model='Prius', owner=p2)
    c2 = Car(make='Ford', model='Explorer', owner=p3)
"""
INSERT INTO "Person" ("name", "age") VALUES (?, ?)
['John', 20]
INSERT INTO "Person" ("name", "age") VALUES (?, ?)
['Mary', 22]
INSERT INTO "Person" ("name", "age") VALUES (?, ?)
['Bob', 30]
INSERT INTO "Car" ("make", "model", "owner") VALUES (?, ?, ?)
['Toyota', 'Prius', 2]
INSERT INTO "Car" ("make", "model", "owner") VALUES (?, ?, ?)
['Ford', 'Explorer', 3]
"""
# 更新数据
with db_session:
    p = Person.get(id=2)  # 使用get来获取一条数据,如果没有查到会返回None
    p.name = "new name"
"""
SELECT "id", "name", "age"
FROM "Person"
WHERE "id" = ?
[2]
UPDATE "Person"
SET "name" = ?
WHERE "id" = ?
['new name', 2]
"""
# 查询数据
with db_session:
    for person in select(p for p in Person if p.age > 20)[:]:
        print(person.name, person.age, person.cars)
"""
SELECT "p"."id", "p"."name", "p"."age"
FROM "Person" "p"
WHERE "p"."age" > 20
SELECT "id", "make", "model", "owner"
FROM "Car"
WHERE "owner" = ?
[2]
SELECT "id", "make", "model", "owner"
FROM "Car"
WHERE "owner" = ?
[3]
"""

参考

只有 Python 魔法少女才知道的 PonyORM

抛弃丑陋,拥抱优雅–Pythonic的Pony ORM

相关文章
|
2月前
|
设计模式 SQL 人工智能
Python设计模式:从代码复用到系统架构的实践指南
本文以Python为实现语言,深入解析23种经典设计模式的核心思想与实战技巧。通过真实项目案例,展示设计模式在软件开发中的结构化思维价值,涵盖创建型、结构型、行为型三大类别,并结合Python动态语言特性,探讨模式的最佳应用场景与实现方式,帮助开发者写出更清晰、易维护的高质量代码。
81 1
|
2月前
|
JSON 监控 BI
拼多多批量下单工具,拼多多买家批量下单软件,低价下单python框架分享
使用Selenium实现自动化操作流程多线程订单处理提升效率
|
2月前
|
设计模式 人工智能 算法
Python设计模式:从代码复用到系统架构的实践指南
本文探讨了电商系统中因支付方式扩展导致代码臃肿的问题,引出设计模式作为解决方案。通过工厂模式、策略模式、单例模式等经典设计,实现代码解耦与系统扩展性提升。结合Python语言特性,展示了模块化、装饰器、适配器等模式的实战应用,并延伸至AI时代的设计创新,帮助开发者构建高内聚、低耦合、易维护的软件系统。
255 0
|
2月前
|
JSON 数据安全/隐私保护 数据格式
拼多多批量下单软件,拼多多无限账号下单软件,python框架仅供学习参考
完整的拼多多自动化下单框架,包含登录、搜索商品、获取商品列表、下单等功能。
|
1月前
|
API 数据安全/隐私保护 Python
拼多多批量上架软件, 电商一键上货发布工具,python电商框架分享
多线程批量上传架构,支持并发处理商品数据 完整的拼多多API签名和token管理机制
|
2月前
|
前端开发 数据安全/隐私保护 Python
虚拟物流单号生成器, 虚拟快递单号假物流信息, 虚拟快递单号在线生成【python框架】
这个虚拟物流单号生成系统包含以下功能:支持多种主流快递公司的单号生成
|
2月前
|
消息中间件 存储 API
抖音私信协议软件,抖音群发私信的工具,抖音自动私信插件【python框架】
这个框架包含配置管理、消息队列、API客户端和主程序四个主要模块。配置管理负责存储账号信息和设置
|
2月前
|
数据采集 API 调度
Python爬虫框架对比:Scrapy vs Requests在API调用中的应用
本文对比了 Python 中 Scrapy 与 Requests 两大爬虫框架在 API 调用中的差异,涵盖架构设计、调用模式、性能优化及适用场景,并提供实战建议,助力开发者根据项目需求选择合适工具。
|
6月前
|
机器学习/深度学习 设计模式 测试技术
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。
|
测试技术 索引 Python
Python接口自动化测试框架(练习篇)-- 数据类型及控制流程(一)
本文提供了Python接口自动化测试中的编程练习,包括计算器、猜数字、猜拳和九九乘法表等经典问题,涵盖了数据类型、运算、循环、条件控制等基础知识的综合应用。
130 1

热门文章

最新文章

推荐镜像

更多