📅  最后修改于: 2023-12-03 15:35:07.151000             🧑  作者: Mango
SQLAlchemy Core 是 SQLAlchemy 库中的一个子组件,用于处理 SQL 查询。 它允许使用 SQL 表达式来构建 SQL 查询,并注入 SQL 参数,以免受 SQL 注入攻击的风险。 Core 还提供了 ORM(对象关系映射)和数据库连接池等其他组件。
在实际使用中,联接(Join)是一种常见的操作。联接可以将两个或多个表中的数据连接(join)到一起,使查询结果包括多个表中的数据。在 SQLAlchemy Core 中,可以使用 join()
函数和 select()
函数来构建联接查询。
首先,需要导入 create_engine
、Table
、Column
、ForeignKey
、join
和 select
函数:
from sqlalchemy import create_engine, Table, Column, ForeignKey
from sqlalchemy.sql import select, join
然后,使用 create_engine
函数创建数据库引擎,并使用 Table
函数定义两个表 users
和 orders
:
engine = create_engine('sqlite:///example.db')
users = Table('users', metadata,
Column('id', Integer, primary_key=True),
Column('name', String),
Column('email', String)
)
orders = Table('orders', metadata,
Column('id', Integer, primary_key=True),
Column('user_id', ForeignKey('users.id')),
Column('product', String),
Column('amount', Integer)
)
接下来,使用 join
函数连接这两个表,定义使用 join 操作时的查询条件:
stmt = select([users.c.name, orders.c.product, orders.c.amount]).select_from(
join(users, orders, users.c.id == orders.c.user_id)
)
最后,使用 execute
函数执行查询语句,并打印结果:
with engine.connect() as conn:
result = conn.execute(stmt)
for row in result:
print(row)
SQLAlchemy Core 提供了多种构建联接查询的方式,不仅仅限于上述示例中使用的 join
函数。熟悉这些方式可以帮助开发者更好地利用 SQLAlchemy Core 来操作数据库。