【发布时间】:2014-12-10 23:58:32
【问题描述】:
我想为查询中的列名分配区分大小写的别名,但 PostgreSQL 只是忽略别名中的任何大小写并将其保留为小写。我知道它以小写形式存储所有内容,但我只想在查询中区分大小写别名。有什么办法让它工作吗?在对巨大的 dict 集执行查询后手动重命名内容听起来很荒谬。
更新:重要提示 - 我使用的是 Amazon Redshift。亚马逊有可能限制它吗?
例子
select superid from supertable;
...
cursor.execute(query)
results = cursor.fetchall()
for row in results:
print row['superid']
// ^ WORKING
------------------------
select superid as "superId" from supertable;
...
cursor.execute(query)
results = cursor.fetchall()
for row in results:
print row['superId']
// ^ NOT WORKING
【问题讨论】:
-
我无法复制它。使用
col_name as FOO(无引号)将FOO去大写,但col_name as "FOO"(带引号)似乎没有。 -
如果您希望标签区分大小写,请在标签周围使用双引号。
-
如果我在查询中使用单引号,那么我在查询中收到错误,如果我在 getitem 中使用双引号,那么它会抛出同样的错误。我试图检查结果列表的键,它们都是小写的,与查询中的大小写无关。也许这是亚马逊的红移限制,我对此添加了注释。仍在寻求帮助。
-
Redshift 目前还不支持。 /耸肩
-
[重新标记]。顺便说一句:一般建议是不要依赖区分大小写。 (直到现在,我从未意识到这也可以应用于别名)
标签: python sql postgresql psycopg2 amazon-redshift