Python Flask REST API MySQL получить ключи и значения курсора - PullRequest
0 голосов
/ 15 января 2020

Я написал небольшой тестовый код, используя Python3 / Flask / MySQL, чтобы получить ответ из базы данных MySQL с запросом SELECT. Но мне не удалось проанализировать имена строк (ключей) в соответствии со значениями.

import pymongo, json
import pymysql
from flask import Flask, request, jsonify
from flask_limiter import Limiter
from werkzeug.contrib.fixers import ProxyFix
from flask_restful import Resource, Api
from gevent.pywsgi import WSGIServer
#from mongoAuth import auth
from time import gmtime, strftime
import urllib.request
import re

notFound = json.loads('{"ERROR" : "No data found"}')

# Init MongoDB;
#MC = pymongo.MongoClient(auth['host'] + auth['port'])

# Init MySQL; (Database firewalled)
con = pymysql.connect("127.0.0.1","root","","test" )
cursor = con.cursor()

def get_real_ip():
    print (str(request.remote_addr) + ' Client initiated request ->')
    return (request.remote_addr)

# Flask rules
app = Flask(__name__)
app.wsgi_app = ProxyFix(app.wsgi_app, num_proxies=1)
limiter = Limiter(app, key_func=get_real_ip, default_limits=["6/minute"])
app.url_map.strict_slashes = False
api = Api(app, prefix="/apiv1/free")

def checkInvalidChars(value):
    regex = re.compile('[@_!#$%^&*()<>?/\|}{~:,.}{+]')
    if (regex.search(value) == None):
        return 'OK'
    else:
        return 'FAIL'

# http://127.0.0.1:5000/apiv1/free/getDapp
class getDapp(Resource):
    def get(self):
        cursor.execute("select * from dapp LIMIT 10;")
        return jsonify(data=cursor.fetchall())

# Routes
api.add_resource(getDapp, '/getDapp')

# Serve the high performance http server
if __name__ == '__main__':
    http_server = WSGIServer(('', 5000), app)
    http_server.serve_forever()

Как вы можете видеть, выходные данные - это только значения без ключей (или строк):

{ 
 "data":[ 
  [ 
    1,
    "b127a532-c5d0-4450-bcd2-5e9c9d5e79c6",
    "Ether Tulips",
    "http://ethertulips.com",
    "",
    "",
    "games",
    "eth",
    "approved",
    null,
    0,
    0,
    "Sat, 03 Feb 2018 01:11:15 GMT",
    "Wed, 11 Sep 2019 10:43:01 GMT",
    0,
    "[]",
    0
  ]
 ]
}

Любая помощь, как достичь ключ / значение будет принята с благодарностью.

1 Ответ

0 голосов
/ 15 января 2020

Попробуйте использовать DictCursor .

В соответствии с документацией py mysql метод cursor должен получить тип курсора.

from pymysql.cursors import DictCursor
cursor = con.cursor(DictCursor)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...