在SQLAlchemy中查询视图

2024-04-29 01:28:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道SQLAlchemy在查询视图时是否有问题。如果我在服务器上使用普通SQL查询视图,如:

SELECT * FROM ViewMyTable WHERE index1 = '608_56_56';

我有很多唱片。但用SQLAlchemy我只能得到第一个。但在计数中是正确的数字。我不知道为什么。

这是我的SQLAlchemy代码。

myQuery = Session.query(ViewMyTable)
erg = myQuery.filter(ViewMyTable.index1 == index1.strip())

# Contains the correct number of all entries I found with that query.
totalCount = erg.count()
# Contains only the first entry I found with my query.
ergListe = erg.all()

Tags: the服务器视图sqlsqlalchemywithallquery
1条回答
网友
1楼 · 发布于 2024-04-29 01:28:53

如果映射了ViewMyTable,查询将只返回具有完全非空主键的行。此行为特定于0.5版和0.6版的更低版本,如果任何列的主键中有非空值,则该行将转换为实例。指定映射程序的标志allow_null_pks=True,以确保部分主键仍然有效:

mapper(ViewMyTable, myview, allow_null_pks=True)

如果返回的行具有主键的所有空值,则SQLAlchemy无法创建实体,因为它无法将其放入标识映射中。相反,您可以通过具体查询来获取各个列:

for id, index in session.query(ViewMyTable.id, ViewMyTable.index):
    print id, index

相关问题 更多 >