我正在构建一个小API,以便与其他项目的数据库进行交互。我已经建立了数据库,API运行良好,但是,我得到的数据并不是我想要的结构。你知道吗
我将Python与Flask/Flask Restful一起用于API。 下面是处理交互的Python片段:
class Address(Resource):
def get(self, store):
print('Received a request at ADDRESS for Store ' + store )
conn = sqlite3.connect('store-db.db')
cur = conn.cursor()
addresses = cur.execute('SELECT * FROM Sites WHERE StoreNumber like ' + store)
for adr in addresses:
return(adr, 200)
如果我向/sites/42端点发出请求,其中42是站点id,我将收到:
[
"42",
"5000 Robinson Centre Drive",
"",
"Pittsburgh",
"PA",
"15205",
"(412) 787-1330",
"(412) 249-9161",
"",
"Dick's Sporting Goods"
]
最终,我希望使用列名作为接收到的JSON中的键,但是我需要一点正确方向的指导,这样我就不会在google上搜索模棱两可的术语,希望找到一些东西。你知道吗
下面是向该端点发出请求后希望接收的内容的示例:
{
"StoreNumber": "42",
"Street": "5000 Robinson Centre Drive",
"StreetSecondary": "",
"City": "Pittsburgh",
"State": "PA",
"ZipCode": "15205",
"ContactNumber": "(412) 787-1330",
"XO_TN": "(412) 249-9161",
"RelocationStatus": "",
"StoreType": "Dick's Sporting Goods"
}
我只是想得到一些指导,看看我是否应该改变我的数据在数据库中的结构(也就是说,我看到一些人只是把JSON放在他们的数据库中,但我认为这很混乱),或者是否有一个更直观的方法可以用来控制我的数据。你知道吗
使用接受答案更新代码
class Address(Resource):
def get(self, store):
print('Received a request at ADDRESS for Store ' + store )
conn = sqlite3.connect('store-db.db')
cur = conn.cursor()
addresses = cur.execute('SELECT * FROM Sites WHERE StoreNumber like ' + store)
for r in res:
column_names = ["StoreNumber", "Street", "StreetSecondary","City","State", "ZipCode", "ContactNumber", "XO_TN", "RelocationStatus", "StoreType"]
data = [r[0], r[1], r[2], r[3], r[4], r[5], r[6], r[7], r[8]]
datadict = {column_names[itemindex]:item for itemindex, item in enumerate(data)}
return(datadict, 200)
您只需将列表转换为dict,然后将其解析为JSON字符串,然后再将其传回。你知道吗
我们现在有一个包含数据和列名的命名dict。你知道吗
现在将datadict转储为一个字符串,以便可以将其发送到前端。你知道吗
dict现在已转换为字符串。你知道吗
这不需要对数据库进行任何更改,但脚本需要了解列名或使用一些SQL动态检索它们。你知道吗
如果数据库中的数据格式正确,可以传递到前端,则不需要更改数据库结构。如果它的格式不正确,那么您可以更改它的存储方式,也可以更改SQL查询来操作它。你知道吗
相关问题 更多 >
编程相关推荐