SQLAlchemy是一个流行的Python SQL工具包和对象关系映射(ORM)库,它提供了一系列丰富的操作方法用于数据库操作。以下是一些SQLAlchemy常用的操作方法:
在SQLAlchemy中,可以通过声明式或经典式两种方式创建表。声明式方式较为常用,通过定义Python类来映射数据库表。
python
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
通过session对象来管理数据库会话,可以使用add()或add_all()方法插入单条或多条记录。
python
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
new_user = User(name='Alice')
session.add(new_user)
session.commit()
# 或者批量插入
users = [User(name='Bob'), User(name='Charlie')]
session.add_all(users)
session.commit()
SQLAlchemy提供了强大的查询API,可以通过session.query()方法构建查询。
python
users = session.query(User).all()
python
# 使用filter
user = session.query(User).filter(User.name == 'Alice').first()
# 使用filter_by(注意:filter_by不支持比较运算符,仅支持直接等于的比较)
user = session.query(User).filter_by(name='Alice').first()
排序与分页:通过order_by()进行排序,limit()和offset()进行分页。
python
# 排序
users = session.query(User).order_by(User.name.asc()).all()
# 分页
page_users = session.query(User).order_by(User.id).limit(10).offset(20).all()
更新数据通常通过查询找到记录后,直接修改对象的属性,然后提交会话。
python
user = session.query(User).get(1) # 假设主键为1
user.name = 'Alice Updated'
session.commit()
或者,使用update()方法批量更新(注意:update()方法会直接执行SQL更新语句,不会修改session中的对象状态)。
python
session.query(User).filter(User.name == 'Alice').update({"name": "Alice Renamed"}, synchronize_session=False)
session.commit()
删除数据也是通过查询找到记录后,使用delete()方法或直接调用对象的delete()方法(如果ORM模型定义了该方法),然后提交会话。
python
user = session.query(User).get(1)
session.delete(user)
session.commit()
# 或者批量删除
session.query(User).filter(User.name == 'Alice').delete(synchronize_session=False)
session.commit()
虽然SQLAlchemy主要是一个ORM库,但它也支持执行原生SQL语句。
python
from sqlalchemy import text
result = session.execute(text("SELECT * FROM users WHERE name = :name"), {'name': 'Alice'})
for row in result:
print(row)
以上就是SQLAlchemy常用的一些操作方法,涵盖了创建表、插入数据、查询数据、更新数据和删除数据等基本数据库操作。需要注意的是,这些操作都需要在已经创建了数据库引擎(engine)和会话(session)的前提下进行。
推荐一本在统信UOS上Web应用开发的非常不错的书:《Flask Web 应用开发项目实战——基于 Python 和统信 UOS》及其配套计算机操作指南。《Flask Web 应用开发项目实战 基于 Python 和统信 UOS》作为一本深入介绍Flask框架与统信UOS操作系统结合应用的书籍,为开发者提供了丰富的理论知识与实践案例。然而,对于初学者而言,从源码下载到项目部署的全过程可能仍显得复杂且充满挑战。因此,《Flask Web 应用开发项目实战 基于 Python 和统信 UOS》配套计算机操作指南应运而生,旨在为读者提供一条清晰、顺畅的学习路径,确保每位读者都能顺利上手并成功运行Flask项目。