当前位置: 首页>数据库>正文

探索SQLAlchemy:Python ORM的威力与实践

一、SQLAlchemy 简介

SQLAlchemy是一个全面且富有表现力的SQL工具包以及ORM框架,它赋予了Python程序访问关系数据库的能力。相较于直接编写SQL语句,ORM提供了更高级别的抽象,使得我们能够以面向对象的方式来操作数据库,极大地提升了开发效率和代码可读性。

二、 安装与导入

pip install pandas
import pandas as pd

三 、SQLAlchemy 的核心特性

全面的SQL支持:SQLAlchemy几乎支持所有主流的关系型数据库,包括MySQL、PostgreSQL、SQLite、Oracle等,并能自动生成适应各数据库系统的SQL语句。

声明式API:通过元数据描述模式,定义类即定义表结构,实现Python对象与数据库表的映射,使得我们可以用Python代码优雅地表达复杂的SQL查询。

会话管理:提供Session机制进行事务处理,确保数据的一致性和完整性。

灵活查询:内置丰富的查询API,支持复杂查询条件构造,结果集也能方便地转换为Python对象。

四、SQLAlchemy 实践

编写一个类结构和表对应的实体类

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

Base = declarative_base()


class PendingReviewNote(Base):
    # 对应mysql中的表名
    __tablename__ = 'pending_review_notes'

    note_id = Column(Integer, primary_key=True, autoincrement=True, comment='主键')
    employee_account_link = Column(UnicodeText, nullable=True, comment='员工账号链接')
    employee_account_name = Column(UnicodeText, nullable=True, comment='员工账号名称')

    def __init__(self, employee_account_link=None, employee_account_name=None, ):
        self.employee_account_link = employee_account_link
        self.employee_account_name = employee_account_name
        self.employee_note_link = employee_note_link

1. 记录查询

from sqlalchemy import create_engine, MetaData, Table
from sqlalchemy.orm import sessionmaker

from src.ldkj.PendingReviewNote import PendingReviewNote

# 创建数据库引擎对象;格式为:'mysql://用户名:密码@主机地址:端口号/数据库名'
engine = create_engine('mysql://username:password@hostname:port/database_name')

# 开始一个会话
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
session = SessionLocal()

# 通过员工账号进行查询
employee_notes = session.query(PendingReviewNote).filter_by(employee_account_name='员工账号名称').all()
for item in employee_notes:
    print(item.employee_account_link)

# 在结束操作后关闭会话
session.close()

2. 记录新增

from sqlalchemy import create_engine, MetaData, Table
from sqlalchemy.orm import sessionmaker

from src.ldkj.PendingReviewNote import PendingReviewNote

# 创建数据库引擎对象;格式为:'mysql://用户名:密码@主机地址:端口号/数据库名'
engine = create_engine('mysql://username:password@hostname:port/database_name')
# 开始一个会话
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
session = SessionLocal()

# 插入数据
new_note = PendingReviewNote(employee_account_link="员工账号链接", employee_account_name="员工账号名称")
session.add(new_note)
session.commit()  # 提交事务以完成插入

# 在结束操作后关闭会话
session.close()

五、结论

SQLAlchemy凭借其强大的功能、灵活的设计以及对Python语言特性的深度整合,已经成为Python开发人员进行数据库操作时不可或缺的工具。无论是小型项目还是大型企业级应用,SQLAlchemy都能提供高效、稳定和易用的解决方案,让数据持久化变得更加轻松自如。


https://www.xamrdz.com/database/6bm1850476.html

相关文章: