SQLAlchemy Core – 使用别名
在本文中,我们将看到使用Python的 SQLAlchemy Core 中的别名。
为演示创建表
从 SQLAlchemy 包中导入必要的函数。使用 create_engine()函数与 PostgreSQL 数据库建立连接,如下所示。创建一个名为 books 的表,其中包含 book_id 和 book_price 列。如图所示,使用 insert() 和 values()函数将记录插入表中。
Python3
# import necessary packages
import sqlalchemy
from sqlalchemy import create_engine, MetaData,
Table, Column, Numeric, insert, Integer,
VARCHAR, update, text, delete
from sqlalchemy.engine import result
# establish connections
engine = create_engine(
"database+dialect://username:password@hostname:port/database_name")
# initialize the Metadata Object
meta = MetaData(bind=engine)
MetaData.reflect(meta)
# create a table schema
books = Table(
'books', meta,
Column('book_id', Integer, primary_key=True),
Column('book_price', Numeric),
Column('genre', VARCHAR),
Column('book_name', VARCHAR)
)
meta.create_all(engine)
# insert records into the table
statement1 = books.insert().values(book_id=1,
book_price=12.2,
genre='fiction',
book_name='Old age')
statement2 = books.insert().values(book_id=2,
book_price=13.2,
genre='non-fiction',
book_name='Saturn rings')
statement3 = books.insert().values(book_id=3,
book_price=121.6,
genre='fiction',
book_name='Supernova')
statement4 = books.insert().values(book_id=4,
book_price=100,
genre='non-fiction',
book_name='History of the world')
statement5 = books.insert().values(book_id=5,
book_price=1112.2,
genre='fiction',
book_name='Sun city')
# execute the insert records statement
engine.execute(statement1)
engine.execute(statement2)
engine.execute(statement3)
engine.execute(statement4)
engine.execute(statement5)
Python3
# Get the `books` table from the Metadata object
from sqlalchemy.sql import alias, select
BOOKS = meta.tables['books']
b = BOOKS.alias("a")
s = select([b]).where(b.c.book_id > 2)
# Fetch all the records
result = engine.execute(s).fetchall()
# View the records
for record in result:
print("\n", record)
输出:
在 SQLAlchemy 中实现别名
SQL 别名是一种为表提供临时名称的方法,这种方法更方便、更易读。 SQL 别名有助于在查询中多次使用时使用简单名称代替复杂表名。 sqlalchemy.sql 模块中的 alias()函数表示 SQL 别名。现在让我们看看如何在实践中实现别名。
from sqlalchemy.sql import alias
tablename.alias("a")
从连接到数据库时初始化的元数据对象获取书籍表。在执行查询时使用别名表名,并使用 fetchall()函数获取所有结果。使用 for 循环遍历结果。
下面的查询选择 book_id > 3 的记录,其中“b”作为 BOOKS 表的别名。
Python3
# Get the `books` table from the Metadata object
from sqlalchemy.sql import alias, select
BOOKS = meta.tables['books']
b = BOOKS.alias("a")
s = select([b]).where(b.c.book_id > 2)
# Fetch all the records
result = engine.execute(s).fetchall()
# View the records
for record in result:
print("\n", record)
输出: