当前位置 : 首页 » 文章分类 :  开发  »  Python-SQLAlchemy

Python-SQLAlchemy

Python ORM 框架 SQLAlchemy(瑟扣-奥克米) 笔记,Alchemy /ˈælkəmi/ 炼金术

ORM(Object Relational Mapping) 对象关系映射:将面向对象程序中的对象和关系数据库的表结构做映射,像操作对象一样操作数据库表。

SQLAlchemy 是 Python 中最流行的 ORM 框架。
https://www.sqlalchemy.org/
https://github.com/sqlalchemy/sqlalchemy


安装 SQLAlchemy 及 MySQL 驱动

pip install sqlalchemy
pip install mysql-connector-python


概念

SQLAlchemy 概念 数据库
engine 引擎 数据库连接
session 会话 会话
model 模型
column 列

session

会话(Session)是 SQLAlchemy 中用来封装数据库交互的一个核心概念。它作为一个临时的事务空间,管理着所有对象到数据库的持久化操作,包括数据的增加、查询、更新和删除。
Session 记录我们对数据的所有更改,直到我们确认要提交这些更改,或者回滚。

engine = create_engine('sqlite:///example.db')  # 创建数据库引擎
session_maker = sessionmaker(bind=engine)  # 创建Session工厂
session = session_maker()  # 创建Session实例

定义模型

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import declarative_base

# 模型基类
Base = declarative_base()

# 数据模型
class User(Base):
    __tablename__ = 'user'
    id = Column(Integer, primary_key=True, autoincrement=True, comment='主键ID')
    code = Column(String(255), nullable=False, unique=True, comment='学号')
    name = Column(String(255), nullable=False, comment='姓名')
    age = Column(Integer, nullable=True, comment='年龄')

declarative_base() 是 sqlalchemy 内部封装的一个方法,通过其构造一个基类,这个基类和它的子类,可以将 Python 类和数据库表关联映射起来。
数据库表模型类通过 __tablename__ 和表关联起来,Column 表示数据表的列。


Peewee

https://github.com/coleifer/peewee/
https://pypi.org/project/peewee/

pip install peewee

Peewee 是一个轻量级但功能强大的 ​​Python ORM(对象关系映射)库​​,专为简化数据库交互设计。它通过面向对象的方式操作数据库,避免直接编写 SQL,适合快速开发和小型项目。

模型定义:

from peewee import Model, CharField, IntegerField

class User(Model):
    username = CharField(unique=True)  # 唯一约束
    age = IntegerField()
    created_at = DateTimeField(default=datetime.now)

    class Meta:
        database = db  # 绑定数据库

CRUD 操作​

  • 增 User.create(name=’Bob’, age=25) 或 user.save()
  • 删 user.delete_instance() 或 User.delete().where(…).execute()
  • 查 User.get(User.name == ‘Alice’) 或 User.select().where(…)
  • 改 User.update(age=30).where(User.name == ‘Alice’).execute()

上一篇 Python-pytest

下一篇 Python-pip

阅读
评论
560
阅读预计2分钟
创建日期 2025-03-23
修改日期 2025-08-11
类别

页面信息

location:
protocol:
host:
hostname:
origin:
pathname:
href:
document:
referrer:
navigator:
platform:
userAgent:

评论