Python 数据库 ORM 实战:SQLAlchemy 详解
Python 数据库 ORM 实战SQLAlchemy 详解1. 背景与动机ORM对象关系映射简化了数据库操作使开发者可以使用面向对象的方式操作数据库。SQLAlchemy 是 Python 最强大的 ORM 工具提供了灵活且功能丰富的数据库操作接口。2. 基础配置from sqlalchemy import create_engine, Column, Integer, String, DateTime from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from datetime import datetime engine create_engine(postgresql://user:passwordlocalhost/dbname) Base declarative_base() Session sessionmaker(bindengine)3. 模型定义class User(Base): __tablename__ users id Column(Integer, primary_keyTrue) username Column(String(80), uniqueTrue, nullableFalse) email Column(String(120), uniqueTrue) created_at Column(DateTime, defaultdatetime.utcnow) def __repr__(self): return fUser {self.username} # 创建表 Base.metadata.create_all(engine)4. CRUD 操作session Session() # 创建 new_user User(usernamealice, emailaliceexample.com) session.add(new_user) session.commit() # 查询 user session.query(User).filter_by(usernamealice).first() users session.query(User).filter(User.id 5).all() # 更新 user.email new_emailexample.com session.commit() # 删除 session.delete(user) session.commit() session.close()5. 高级查询from sqlalchemy import func, and_, or_ # 聚合查询 result session.query( func.count(User.id), func.max(User.created_at) ).first() # 联合查询 from sqlalchemy.orm import joinedload users_with_posts session.query(User).options( joinedload(User.posts) ).all() # 分页 users session.query(User).offset(10).limit(10).all()6. 性能优化# 连接池配置 engine create_engine( postgresql://user:passwordlocalhost/dbname, pool_size10, max_overflow20, pool_pre_pingTrue ) # 批量插入 session.bulk_save_objects([User(usernamefuser{i}) for i in range(1000)]) session.commit()7. 结论SQLAlchemy 提供了从简单到复杂的数据库操作能力通过 ORM 可以显著提高开发效率同时保持对 SQL 的灵活控制。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2472747.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!