📜  SQLAlchemy ORM – 查询(1)

📅  最后修改于: 2023-12-03 14:47:39.045000             🧑  作者: Mango

SQLAlchemy ORM – 查询

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')
建立ORM映射

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文档中找到更多信息。