说我有一个名为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()")
答案 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 - 并非所有数据库都可以。