Postgresql在每个表上隐式定义了几个列,如xmax
和ctid
(见文档)。
假设我的SQLAlchemy表定义没有指定这些列,是否有一种方法可以使用核心SQL功能(即不是SA的ORM部分)来选择它们?
以下方法不起作用,因为xmax
在表定义中没有显式定义。
table = sa.Table(
"mytable",
metadata,
sa.Column("col_a", sa.BIGINT),
sa.Column("date", sa.DATE),
)
s = sa.select([table.c.xmax])
result = engine.execute(s)
我的具体需求是在upsert语句的returning
子句中引用xmax
。
insert(mytable).returning((mytable.c.xmax == 0).label("inserted"))
insert(mytable).returning(sa.text("xmax = 0 AS inserted"))
- Rob Cowie