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
页面信息
location:
protocol
: host
: hostname
: origin
: pathname
: href
: document:
referrer
: navigator:
platform
: userAgent
: