Python ORM(Object-Relational Mapping)推荐

导言

在软件开发中,数据库是必不可少的组成部分。而在处理数据库操作时,开发者通常需要编写大量的SQL语句,这不仅繁琐,而且容易出错。为了解决这个问题,ORM(Object-Relational Mapping)技术应运而生。

ORM是一种将对象和关系数据库之间进行映射的技术,它可以通过面向对象的方式操作数据库,使开发者能够更加方便地执行增删改查等操作。在Python中,有许多优秀的ORM库可供选择,下面将介绍一些常用的Python ORM库,并给出相应的代码示例。

SQLAlchemy

SQLAlchemy是Python中最流行的ORM库之一,它支持多种数据库后端,并且提供了许多高级的查询和映射功能。

安装

pip install sqlalchemy

连接数据库

from sqlalchemy import create_engine

# 创建数据库引擎
engine = create_engine('sqlite:///test.db', echo=True)

# 创建Session
session = sessionmaker(bind=engine)()

定义模型

from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):
    __tablename__ = 'user'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

创建表格

Base.metadata.create_all(engine)

插入数据

user = User(name='Alice', age=20)
session.add(user)
session.commit()

查询数据

users = session.query(User).all()
for user in users:
    print(user.name, user.age)

更新数据

user = session.query(User).filter(User.name == 'Alice').first()
user.age = 21
session.commit()

删除数据

user = session.query(User).filter(User.name == 'Alice').first()
session.delete(user)
session.commit()

Peewee

Peewee是另一个流行的Python ORM库,它的设计目标是简洁、轻量级,并且易于使用。

安装

pip install peewee

连接数据库

from peewee import SqliteDatabase

db = SqliteDatabase('test.db')

定义模型

from peewee import Model, CharField, IntegerField

class User(Model):
    name = CharField()
    age = IntegerField()

    class Meta:
        database = db

创建表格

User.create_table()

插入数据

user = User(name='Alice', age=20)
user.save()

查询数据

users = User.select()
for user in users:
    print(user.name, user.age)

更新数据

user = User.get(User.name == 'Alice')
user.age = 21
user.save()

删除数据

user = User.get(User.name == 'Alice')
user.delete_instance()

Pony ORM

Pony ORM是一个简洁而强大的Python ORM库,它使用了领域特定语言(DSL)来定义模型和查询。

安装

pip install pony

连接数据库

from pony.orm import Database

db = Database('sqlite', ':memory:')

定义模型

from pony.orm import PrimaryKey, Required

class User(db.Entity):
    id = PrimaryKey(int, auto=True)
    name = Required(str)
    age = Required(int)

创建表格

db.generate_mapping(create_tables=True)

插入数据

with db_session:
    user = User(name='Alice', age=20)

查询数据

with db_session:
    users = select(u for u in User)
    for user in users:
        print(user.name, user.age)

更新数据

with db_session:
    user = User.get(name='Alice')
    user.age = 21

删除数据

with db_session:
    user = User.get(name='Alice')
    user.delete()

总结

本文介绍了Python中三个常用的ORM库:SQLAlchemy、Peewee和Pony ORM。它们都提供了简洁的API和强大的功能,可以大大简化开发