📜  使用 SQLite 在 SQLAlchemy 中返回不同的行(1)

📅  最后修改于: 2023-12-03 15:06:51.229000             🧑  作者: Mango

使用SQLite在SQLAlchemy中返回不同的行

SQLAlchemy是一个Python中十分流行的ORM。这里将介绍如何在SQLAlchemy中使用SQLite和不同的查询方式来返回结果。

准备工作

确保已经安装了SQLAlchemy和SQLite。可以在Python中使用以下命令安装:

pip install sqlalchemy
pip install sqlite
建立SQLite数据库连接

首先,我们需要建立SQLite数据库的连接。在SQLAlchemy中,我们使用create_engine()函数来建立连接。例如:

from sqlalchemy import create_engine

engine = create_engine('sqlite:///example.db', echo=True)

这里我们建立了一个连接到example.db这个SQLite数据库的engine对象。echo=True参数用来打开调试输出。

建立模型

我们使用SQLAlchemy的模型类来代表数据库表格。例如,下面的代码定义了一个表格名为users的模型类,其中包含了idnameemail三个列:

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

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    email = Column(String)

这里,我们使用了SQLAlchemy的自动映射功能,将模型类的属性映射到数据库表格的列。我们还需要使用declarative_base()函数来建立模型的基类。

插入数据

我们可以使用Session来向数据库中插入数据。例如:

from sqlalchemy.orm import Session

session = Session(bind=engine)

user1 = User(name='John Doe', email='johndoe@example.com')
session.add(user1)

user2 = User(name='Jane Doe', email='janedoe@example.com')
session.add(user2)

session.commit()

这里,我们首先创建了一个Session对象,然后向数据库中插入了两条数据。最后,我们提交了更改,将数据永久保存到数据库中。

查询数据

下面,我们将介绍三种不同的查询方式。

查询所有行

使用以下代码可以返回所有行:

users = session.query(User).all()

for user in users:
    print(user.__dict__)

这里,我们调用query()方法来查询User表格中的所有行。.all()方法用来返回结果集合。注意,返回的结果是一个Python列表。我们可以循环遍历结果,打印每一行的内容。

查询满足条件的行

我们可以使用filter()方法来进行条件查询。例如,下面的代码查询了所有姓为Doe的人:

users = session.query(User).filter(User.name.like('%Doe%'))

for user in users:
    print(user.__dict__)

这里,我们使用like()方法指定了查询条件。%是通配符,表示任意字符。因此,查询语句中的'%Doe%'表示包含Doe字串的所有名字。

查询部分列

有时候,我们只需要返回部分列。在SQLAlchemy中,我们可以使用query()方法来指定需要返回的列。例如,下面的代码只返回了name列:

names = session.query(User.name).all()

for name in names:
    print(name)

这里,我们使用了.query(User.name)方法来指定查询目标。由于我们只需要返回name列,因此返回的结果是一个Python列表,每个元素都是一个名字。

结论

在SQLAlchemy中使用SQLite非常简单。我们可以使用SQLAlchemy的ORM功能轻松创建模型类,向数据库中插入数据,查询数据并返回不同的结果集合。