Python 中的 ORM(Object-Relational Mapping)框架,其中最著名和广泛使用的两个是 SQLAlchemy 和 Django ORM。
1. SQLAlchemy
SQLAlchemy 是 Python 中功能最强大的 SQL 工具库之一,它不仅提供了 ORM 功能,还提供了核心的数据库 SQL 工具。它允许你用 Python 类来表示数据库表,并且可以使用 Python 代码而不是直接写 SQL 查询语句来操作数据库。这非常类似于 MyBatis 的方式,但更接近于 Hibernate。
特点:
- 支持多种数据库(如 PostgreSQL, MySQL, SQLite 等)。
- 提供了两种主要的使用方式:核心 SQL Expression Language 和 ORM。
- 高度可扩展,可以自定义行为和事件。
示例代码:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
engine = create_engine('sqlite:///example.db')
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
new_user = User(name='John Doe')
session.add(new_user)
session.commit()
2. Django ORM
Django 是一个全栈式的 Python Web 框架,其中包含了一个强大的 ORM。Django ORM 提供了一种简单的方式来创建和查询数据库表,而无需编写原始的 SQL 代码。它的设计哲学是“不要重复自己”(DRY),因此提供了许多便利的功能,如自动管理数据库迁移、自动生成管理界面等。
特点:
- 内置了模型验证和错误报告。
- 自动生成管理界面。
- 支持数据库的迁移管理。
示例代码:
from django.db import models
class User(models.Model):
name = models.CharField(max_length=100)
# 在 Django shell 或视图中使用 ORM
user = User(name='John Doe')
user.save()
# 查询
users = User.objects.all()
总结
SQLAlchemy 和 Django ORM 都提供了类似于 MyBatis 的功能,但它们的使用场景和设计哲学略有不同。如果你正在构建一个复杂的 Web 应用,那么 Django 可能更适合你,因为它提供了更多的开箱即用的功能。如果你需要更细粒度的控制或者想要在非 Web 应用中使用 ORM,那么 SQLAlchemy 是更好的选择。