如何将我的 pymysql 查询结果转换为 json 格式?

Posted

技术标签:

【中文标题】如何将我的 pymysql 查询结果转换为 json 格式?【英文标题】:How do I convert my pymysql query result to json format? 【发布时间】:2021-08-28 20:22:03 【问题描述】:

我正在制作一个需要返回 json 的 API。

下面是我的views.py

from flask.json import jsonify
from team2_project import app
from team2_project import cursor
import json
from flask import jsonify
@app.route('/')
def index():
    sql = ("SELECT * FROM Clients_002")
    cursor.execute(sql)
    formulas = cursor.fetchall()

    return str(formulas)

初始化.py

from flask import Flask
import pymysql
pymysql.install_as_MySQLdb
import pymysql.cursors
app = Flask(__name__)
connection = pymysql.connect(host='',
                             user='',
                             password='',
                             db='',
                             cursorclass=pymysql.cursors.DictCursor)
cursor = connection.cursor(pymysql.cursors.DictCursor)

import team2_project.views

我的函数返回:

["clientCompID_002": 1, "clientCompName_002": "Telus", "clientCity_002": "Halifax", "clientCompPassword_002": "002", "moneyOwed_002": "100", "clientCompID_002": 2, "clientCompName_002": "Bell", "clientCity_002": "Dartmouth", "clientCompPassword_002": "002", "moneyOwed_002": "10", "clientCompID_002": 3, "clientCompName_002": "Purple Cow", "clientCity_002": "Bedford", "clientCompPassword_002": "002", "moneyOwed_002": "120", "clientCompID_002": 4, "clientCompName_002": "Apple", "clientCity_002": "Toronto", "clientCompPassword_002": "002", "moneyOwed_002": "1210", "clientCompID_002": 5, "clientCompName_002": "Sowo", "clientCity_002": "Montreal", "clientCompPassword_002": "002", "moneyOwed_002": "1110"]

如何在带有缩进的 json 中输出?我尝试了 jsonify() 但它返回与 str() 相同的结果。似乎无法摆脱方括号。

谢谢

【问题讨论】:

【参考方案1】:

使用json包的dumps()方法,它有一个缩进参数可以使用。

示例: json.dumps(formulas, indent=4)

【讨论】:

它仍然返回带有方括号的相同输出。 方括号应该在那里,我不确定你在问什么。您有一个对象列表,并表示 JSON 使用方括号。 哦,我的印象是 json 只需要以花括号开头 如果您确定只处理一个对象,但在您的情况下,因为您要从数据库中提取行,所以您有多个 JSON 对象,它们被表示为一个列表,所以在这种情况下它是有意义的,它仍然是有效的 JSON。 如果你真的想要,你可以创建一个新对象并将其粘贴在 dict 键中,但这有点不必要。 new_formulas= "dataset": formulas【参考方案2】:

如果您尝试fetchall(),将返回字典数组。要获得单个对象,您只需 fetchone()。所以,试试吧,

formulas = cursor.fetchone()

【讨论】:

以上是关于如何将我的 pymysql 查询结果转换为 json 格式?的主要内容,如果未能解决你的问题,请参考以下文章

如何将我的 N 个小查询转换为一个查询?

如何将我的查询结果显示为字符串的一部分?

将我的 mssql 查询变成结构化的 xml 结果集

如何停止 Pandas Dataframe read_json 方法将我的时代转换为人类可读的字符串

使用 PHP 从 MySQL 结果输出复杂的 JSON

如何使用 pymysql 将 mySQL 查询结果存储到 pandas DataFrame 中?