📅  最后修改于: 2023-12-03 15:06:51.229000             🧑  作者: Mango
SQLAlchemy是一个Python中十分流行的ORM。这里将介绍如何在SQLAlchemy中使用SQLite和不同的查询方式来返回结果。
确保已经安装了SQLAlchemy和SQLite。可以在Python中使用以下命令安装:
pip install sqlalchemy
pip install 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
的模型类,其中包含了id
、name
、email
三个列:
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功能轻松创建模型类,向数据库中插入数据,查询数据并返回不同的结果集合。