【问题标题】:Fetching values as {"property-name": "value"} using pymysql使用 pymysql 获取值作为 {"property-name": "value"}
【发布时间】:2018-09-21 01:38:37
【问题描述】:

我是 Python 新手,我正在使用 Flask 构建一个简单的 CRUD 应用程序。以下是我的做法:

from flask import Flask,request
import pymysql.cursors

connection = pymysql.connect(
host='localhost',
db='mydb',
user='root',
password='password',
cursorclass='pymysql.cursors.DictCursor
)

@app.route('/login',methods=['POST'])
def login():
    cursor = connection.cursor(pymysql.cursors.DictCursor)
    cursor.execute("SELECT id,hash,displayName,attempt,status FROM users WHERE id=%s", (request.form['username']))
    user = cursor.fetchone()
    pprint(user)

但是这段代码会输出类似这样的东西:

{u'displayName': 'John Smith',
 u'hash': 'somehash.asdf!@@#$',
 u'id': 'developer',
 u'attempt': 0,
 u'status': 1
}

问题是,我似乎无法使用标准的user.hash 语法获取这些属性。难道我做错了什么?我需要:

  • 将其转换为类似 JSON 的结构
  • 获取user 以这种形式呈现时的属性

【问题讨论】:

  • 那么,你希望你的输出是 JSON 吗?
  • @KlausD。我已经稍微澄清了这个问题。我正在尝试获取user 的属性,因为在这种情况下user.hash 返回None
  • user["hash"] 访问返回的dict 中的哈希,json_str = json.dumps(user) 将其转换为 JSON 字符串。
  • @zwer 这行得通。现在有人需要把它作为答案,这样我就可以选择一个接受的答案。

标签: python flask pymysql


【解决方案1】:

当使用pymysql.cursors.DictCursor游标时,获取的数据以dictionary的形式返回,因此您可以在其上使用所有常见的dict遍历/访问/修改方法。

这意味着您可以将返回的 hash 访问为:user["hash"]

对于 JSON,Python 带有一个内置的 json 模块,可以轻松地将检索到的 dict 转换为 JSON 字符串,因此在您的情况下,获取返回的 user 的 JSON 表示字典使用:

import json

json_string = json.dumps(user)
print(json_string)  # or do whatever you need with it

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    相关资源
    最近更新 更多