2

I have a Python API that receives data from mysql select query. The data looks like this:

| val | type | status |
|-----|------|--------|
|  90 |    1 |      a |

That data was received well in python. Now I want to present that data as JSON to my REST client - how?

Here is my python code:

def somefunction(self, by, identifier):
    # validate args
    procedure = 'mysproc' + str(by)

    try:
        with self.connection.cursor() as cursor:
            cursor.callproc(procedure,[str(identifier)])
            self.connection.commit()
            result = cursor.fetchone()

            print("+++ Result: " + str(result) + " +++")
    except:
        result = "Request Failed"
        raise
    finally:
        self.DestroyConnection()

    return json.dumps(result)

with that, my client is receiving:

"[90, 1, "a"]"

Question:

is there a way for me to receive it as a proper JSON? like:

{'val': 90, 'type': 1 , : 'status': "a"}
Dartmouth
  • 1,069
  • 2
  • 15
  • 22
AnD
  • 3,060
  • 8
  • 35
  • 63

1 Answers1

1

You will first need to get the mysql query to return a dict object instead of a list. If your library is MySQLdb then this answer: Python - mysqlDB, sqlite result as dictionary is what you need.

Here is a link to the docs for MySQLdb: http://www.mikusa.com/python-mysql-docs/docs/MySQLdb.connections.html

I think if you pass in the cursor class you want to use when you create your cursor the result of fetchone will be a dictionary.

with self.connection.cursor(MySQLdb.cursors.DictCursor) as cursor:

Running json.dumps(result) on a dictionary will give the output you are looking for.

Community
  • 1
  • 1
intrepidhero
  • 701
  • 7
  • 10