My database looks like this:
CREATE TABLE my_table( irrelevant_column TEXT, json_stuff JSON );
mysql> SELECT * FROM my_table;
+------------------------+-----------------------------------------------+
| irrelevant_column | json_stuff |
+------------------------+-----------------------------------------------+
| blah blah | { 'this': 'is my json data' } |
| more unrelated stuff | { 'more': 'of my data in the correct format' }|
+------------------------+-----------------------------------------------+
I am looking for an elegant way to query JSON data from MySQL into a list of dicts.
I have tried using a DictCursor
cursor = connection.cursor( pymysql.cursors.DictCursor )
cursor.execute( "SELECT json_stuff FROM my_table" )
rows = cursor.fetchall()
but it doesn't properly handle the JSON column type. It returns this:
[
{ "json_stuff": "<json_stuff row 1 in string format>" },
{ "json_stuff": "<json_stuff row 2 in string format>" },
etc.
]
I would like
[
{ 'this': 'is my json data' },
{ 'more': 'of my data in the correct format' },
etc.
]
This ugly and inefficient code works.
def get_list_of_stuff():
cursor = connection.cursor()
cursor.execute( "SELECT json_stuff FROM my_table" )
rows = cursor.fetchall()
return [ json.loads( row["json_stuff"] ) for row in rows ]
Does anyone know a way to do this without looping through all of the rows and parsing each one into JSON?