如何在SQL中为列创建别名

时间:2017-05-25 01:21:24

标签: python sql-server json

说我有一个名为hotel的SQL表如下:

id   numOfRoom
1       30
2       20
3       40

我正在用Python构建一个Web服务器,所以我使用一些接口来获取我的数据库。

query = 'select * from hotel where id = 1'
// connect db
result = cursor.fetchone()

现在result的类型是字典,所以我可以这样做:

print(result['id'])  # 1
print(result['numOfRoom'])   #30

在我的项目中,我需要生成一个JSON并将其发送到前端:

{
    "id":result['id'],
    "numOfRoom":result['numOfRoom']
}

但是,在这种情况下,前端无法获得正确的密钥,因为numOfRoom对用户来说不是正确的。对于用户,他们需要获得number of rooms

之类的内容

所以,我重新生成一个JSON:

{
    "id":result['id'],
    "number of rooms":result['numOfRoom']
}

现在,前端可以只显示key:value,用户也很满意。

但我认为这不是一个好主意。因为如果我更新我的sql表,我会触摸我的后端代码。是否可以为SQL中的列创建别名,我立即得到它们,以便我可以编码生成JSON,如下所示:

myjson = generateEmptyJson()
foreach val in result:
    myjson.append("val.getAlias()":"val.getValue()")

2 个答案:

答案 0 :(得分:1)

您可以在SQL语句中分配值:

select h.id, h.numOfRoom as [Number of Rooms]
from hotel
where id = 1;

如果更改基础结构,则仍需要更改SQL。

答案 1 :(得分:0)

另一种可能性是在数据库中创建VIEW。

基础变更表:

create changed_hotel (id int PRIMARY KEY NOT NULL, total_rooms int);

查看以反映您的应用正在寻找的内容:

create view  my_view as
select id, total_rooms as numOfRoom from changed_hotel;

您必须检查SQL Server中的语法(不是我熟悉的语法),并确保它可以对视图执行DML - 并非所有数据库都可以。