将sql表数据转换为json

Posted

技术标签:

【中文标题】将sql表数据转换为json【英文标题】:Converting sql table data to json 【发布时间】:2017-04-01 22:47:45 【问题描述】:

我在服务器端使用烧瓶,我有以下 api:

class DateTimeEncoder(json.JSONEncoder):
    def default(self, o):
        if isinstance(o, datetime):
            return o.isoformat()

        return json.JSONEncoder.default(self, o)


@app.route('/getTransaction', methods=['GET','POST'])
def getTransaction():

uid = request.form["uid"]
db = my.connect("somehost.com","someuser","somepwd","someDB")
cur = db.cursor()

cur.execute("select * from Transactions where uid='%s'" %(uid))

json_string = json.dumps(cur.fetchall(),cls=DateTimeEncoder)

db.close()
return json.dumps(json_string)

在此之后我得到的响应为:

http://sairav.pythonanywhere.com/getTransaction

有没有办法我可以用键(例如名称、描述、数量、类型、id、您可以在响应中看到的值的时间)将这些数据转换为 json 格式

json 数组中的必需格式:

"data":[
    "Name":"John", "desc":"Doe","amount":"123.0","type":"credit","uid":"213","time":"12-11-2016 12:23:22",
    "Name":"John2", "desc":"Doe","amount":"1234.0","type":"credit","uid":"213","time":"12-11-2016 12:23:22",
    "Name":"John3", "desc":"Doe","amount":"1235.0","type":"credit","uid":"213","time":"12-11-2016 12:23:22",
]

【问题讨论】:

默认游标是行游标,即它发送["john", "doe", "123.0", "credit"]。您可以创建一个dictcursor,它将作为字典发出行。否则,您可以像在this so answer 中一样访问cursor.description 并使用字段名称压缩行。一旦你有了它,你就可以继续使用 json.dumps 【参考方案1】:

在这里发现真的很有帮助answer 完全解决了我的目的,它将我的表列名设置为 json 数组中 json 对象的键。 感谢 algrebe 提供的链接。

具有所需 json 输出的运行代码是:

  @app.route('/getTransaction', methods=['GET','POST'])
  def getTransaction():

  uid = request.form["uid"]
  db = my.connect("somehost.com","someuser","somepwd","someDB")
  cur = db.cursor()

  cur.execute("select * from Transactions where uid='%s'" %(uid))


  **columns = cur.description
  result = [columns[index][0]:column for index, column in enumerate(value)   for value in cur.fetchall()]**


  db.close()

  **return json.dumps(result,cls=DateTimeEncoder)**

【讨论】:

以上是关于将sql表数据转换为json的主要内容,如果未能解决你的问题,请参考以下文章

如何将 JSON 中的 SQL 主键转换为 javascript 对象键,并将其他数据作为其值

将 Json 转换为 SQL 表

前端json转sql

如何将多层嵌套的json转换为sql表

如何将分层表转换为json

使用php将sql server数据转换为json