Azure SQL DB查询使用Flask API转换为JSON

2024-09-19 23:39:44 发布

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

我正在尝试通过FlaskAPI查询Azure上托管的SQL Server数据库,并将结果转换为JSON,我正在尝试的内容如下。这是可行的,但是结果是通过转义字符来实现的。数据中似乎没有任何明显的特殊字符。如果我使用API并执行带有参数的存储过程,json将以我想要的格式通过。有没有关于如何修改它以获得标准json格式的建议

app = Flask(__name__)

api = Api(app)
parser = reqparse.RequestParser()
parser.add_argument('customer')

conn = pyodbc.connect(serverconnectionstring)

class Customer(Resource):
    def get(self):     
        cursor = conn.cursor()    
        query = "SELECT * FROM [dbo].[testforjson]"
        result = cursor.execute(query)
        items = [dict(zip([key[0] for key in cursor.description], row)) for row in result]
        jsonitems = json.dumps(items)
        return jsonitems

api.add_resource(Customer, '/customer')

if __name__ == '__main__':
    app.run()


example output: 
"[{\"field1\": \"B2653\", \"field2\": \"ERLOP\"}, {\"field1\": \"C2653\", \"field2\": \"ERLOP\"}]


desired output:
[
  {
    "field1": "B2653",
    "field2": "ERLOP"
  },
  {
    "field1": "C2653",
    "field2": "ERLOP"
  }
]

Tags: nameaddapijsonappparser格式customer
1条回答
网友
1楼 · 发布于 2024-09-19 23:39:44

非常感谢@njzk2的帮助和详细解释。我将其作为结束此问题的答案:

请尝试直接从该获取方法返回项目:

  • 快速解释:如果您返回一个对象,flask将尝试 返回json表示并设置json内容类型。如果你 返回字符串,flask不知道您的意图,并发送 字符串内容类型。然后由你的客户来决定是什么 其用意是。在大多数情况下,字符串内容类型表示 结果以字符串形式呈现给您。但是你也可以忽略 内容类型并将该字符串解析为json

很高兴听到它对你有用。再次感谢@njzk3。这可能对其他社区成员有益

相关问题 更多 >