Python不写SQL语句也能操作数据库

勒令课程 2024-03-15 01:07:32

在Python开发中,SQLAlchemy作为一款强大的ORM工具,以其灵活的架构和广泛的数据源支持赢得了众多开发者的青睐。今天,我们将重点探讨如何使用SQLAlchemy ORM与MySQL数据库进行高效互动,通过详实的代码示例,让您在实战中领略其魅力。

准备工作

确保已经安装SQLAlchemy和PyMySQL(用于连接MySQL):

pip install sqlalchemy pymysql定义数据库引擎与连接MySQL

首先,我们需要创建一个数据库引擎并连接到MySQL数据库:

from sqlalchemy import create_enginefrom sqlalchemy.orm import sessionmaker# 数据库连接信息DATABASE_URI = 'mysql+pymysql://username:password@host:port/database'# 创建数据库引擎engine = create_engine(DATABASE_URI)# 创建Session对象的工厂Session = sessionmaker(bind=engine)定义模型类

接下来,我们将创建一个Python类来映射MySQL中的表结构。以下是一个用户表的模型示例:

from sqlalchemy import Column, Integer, Stringfrom sqlalchemy.ext.declarative import declarative_baseBase = declarative_base()class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String(50), nullable=False) email = Column(String(100), unique=True, nullable=False)# 创建表结构(仅首次运行时需要)Base.metadata.create_all(engine)ORM操作实战插入数据from models import User, Session# 创建新用户对象new_user = User(name='Alice', email='alice@example.com')# 开始会话session = Session()# 将新用户添加到会话中session.add(new_user)# 提交更改,即执行插入操作session.commit()查询数据# 查询所有用户all_users = session.query(User).all()for user in all_users: print(user.name, user.email)# 查询特定用户alice = session.query(User).filter_by(name='Alice').first()print(alice.name, alice.email)更新数据alice.email = 'alice_updated@example.com'session.commit() # 提交更改,执行更新操作删除数据session.delete(alice)session.commit() # 提交更改,执行删除操作高级特性关系映射:SQLAlchemy支持一对一、一对多、多对多等多种复杂的关系映射,方便处理关联表的数据操作。事务管理:通过session.begin()、session.commit()和session.rollback()方法,可以灵活控制事务的开启、提交和回滚。查询表达式:利用SQLAlchemy的查询表达式语言,可以构建复杂且高效的查询语句。总结

通过以上示例,我们已经展示了如何使用SQLAlchemy ORM与MySQL数据库进行基本的CRUD操作。在实际项目中,SQLAlchemy ORM的强大之处在于它的灵活性和扩展性,不仅能够简化数据库操作,还能提升代码的可读性和可维护性。在今后的开发工作中,希望您能充分利用SQLAlchemy ORM的优势,让数据库操作变得更加轻松自如!

关注我,手把手带你快速入门Python Web编程!

0 阅读:1

勒令课程

简介:感谢大家的关注