📅  最后修改于: 2023-12-03 14:47:39.045000             🧑  作者: Mango
SQLAlchemy ORM是一个基于Python的ORM框架,可用于操作多种类型的数据库,如MySQL、PostgreSQL、SQLite等。ORM的主要优点是将数据库表结构映射到Python类中,简化了数据操作的过程,使代码更加具有可读性和可维护性。
在使用SQLAlchemy ORM进行查询之前,需要先建立一个与数据库的连接。以下代码示例展示了如何建立MySQL数据库的连接:
from sqlalchemy import create_engine
engine = create_engine('mysql://user:password@localhost/mydatabase')
SQLAlchemy ORM使用类来实现对数据库表的映射,每个类对应一个表。以下是一个简单的ORM映射示例,将一个学生表映射到一个Python类中:
from sqlalchemy import Column, Integer, String, Date
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Student(Base):
__tablename__ = 'students'
id = Column(Integer, primary_key=True)
name = Column(String(50))
birthday = Column(Date)
在这个映射中,我们使用Column函数指定了表中的列,每个列对应类中的属性。我们还需要指定表名和主键列。
使用SQLAlchemy ORM进行查询,可以方便地使用类的属性进行条件查询和查询结果排序。以下是一个查询学生信息的示例:
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
# 查询所有学生
students = session.query(Student).all()
# 查询名字为Alice的学生
alice = session.query(Student).filter(Student.name == 'Alice').first()
# 查询生日在1990年之后的学生,按姓名排序
birthday_after_1990 = session.query(Student)\
.filter(Student.birthday > datetime.date(1990,1,1))\
.order_by(Student.name).all()
在这个例子中,我们使用sessionmaker建立一个数据库会话,并使用query函数进行查询。filter函数用于指定条件,order_by函数用于指定查询结果的排序方式。
SQLAlchemy ORM是一个功能强大的Python ORM框架,使用的开发者可以方便地对数据库进行操作,减少了对SQL语言的依赖,使代码更加简单和易读。以上是SQLAlchemy ORM查询的简单介绍,您可以在SQLAlchemy文档中找到更多信息。