SQLAlchemy 使用查询基础教程文档

收录于 2023-04-20 00:10:05 · بالعربية · English · Español · हिंदीName · 日本語 · Русский язык · 中文繁體

SQLAlchemy ORM 生成的所有 SELECT 语句都是由 Query 对象构造的。它提供了一个生成接口,因此连续调用会返回一个新的 Query 对象,即前者的副本,并带有附加条件和与之关联的选项。
查询对象最初是使用 Session 的 query() 方法生成的,如下所示-
q = session.query(mapped class)
以下语句也等效于上面给出的语句-
q = Query(mappedClass, session)
查询对象具有 all() 方法,该方法以对象列表的形式返回结果集。如果我们在客户表上执行它-
result = session.query(Customers).all()
此语句等效于以下 SQL 表达式-
SELECT customers.id 
AS customers_id, customers.name 
AS customers_name, customers.address 
AS customers_address, customers.email 
AS customers_email
FROM customers
可以使用 For 循环遍历结果对象,如下所示,以获取基础客户表中的所有记录。这是显示客户表中所有记录的完整代码-
from sqlalchemy import Column, Integer, String
from sqlalchemy import create_engine
engine = create_engine('sqlite:///sales.db', echo = true)
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Customers(Base):
   __tablename__ = 'customers'
   id = Column(Integer, primary_key =  true)
   name = Column(String)
   address = Column(String)
   email = Column(String)
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind = engine)
session = Session()
result = session.query(Customers).all()
for row in result:
   print ("Name: ",row.name, "Address:",row.address, "Email:",row.email)
Python 控制台显示如下记录列表-
Name: Ravi Kumar Address: Station Road Nanded Email: ravi@gmail.com
Name: Komal Pande Address: Koti, Hyderabad Email: komal@gmail.com
Name: Rajender Nath Address: Sector 40, Gurgaon Email: nath@gmail.com
Name: S.M.Krishna Address: Budhwar Peth, Pune Email: smk@gmail.com
Query 对象还有以下有用的方法-
Sr.No. 方法和说明
1
add_columns()
将一个或多个列表达式添加到要返回的结果列列表中。
2
add_entity()
它将映射实体添加到要返回的结果列列表中。
3
count()
它返回此查询将返回的行数。
4
delete()
它执行批量删除查询。从数据库中删除与此查询匹配的行。
5
distinct()
它将 DISTINCT 子句应用于查询并返回新生成的查询。
6
filter()
它使用 SQL 表达式将给定的过滤条件应用于此查询的副本。
7
first()
如果结果不包含任何行,则返回此查询的第一个结果或 None。
8
get()
它根据给定的主键标识符返回一个实例,提供对拥有会话的身份映射的直接访问。
9
group_by()
它将一个或多个 GROUP BY 条件应用于查询并返回新生成的查询
10
join()
它根据此 Query 对象的标准创建一个 SQL JOIN 并生成应用,返回新生成的 Query。
11
one()
它只返回一个结果或引发异常。
12
order_by()
它将一个或多个 ORDER BY 条件应用于查询并返回新生成的查询。
13
update()
它执行批量更新查询并更新数据库中与此查询匹配的行。