Search code examples
python-3.xdictionarymysql-connector-python

Save Results from cursor.callproc in dict


I'm trying to get some data from a MySQL database with a stored procedure and store it in a dict (as mentioned by blair here):

    def createProduct(self):
    self.cursor.callproc('newProduct')

    result = []
    for recordset in self.cursor.stored_results():
        for row in recordset:
            result.append(dict(zip(recordset.column_names,row)))
            print(result)

The cursor is created with the option dictionary=True. The output for print(result) is:

[{'manufacturers_id': 0, 'alarm_threshold': 10, 'users_id_tech': 0, 'name': 'item1', 'entities_id': 0, 'notepad': None, 'locations_id': 0, 'groups_id_tech': 0, 'consumableitemtypes_id': 0, 'id': 1, 'comment': '', 'is_deleted': 0, 'ref': ''}]

I tried to access the value of the key name (which is item1) with this code:

print(result['name'])

TypeError: list indices must be integers, not str

and:

print(result(name))

NameError: name 'name' is not defined

I thought the code from blair would create a dict whose values are accessible by keys (for example 'name')? Is this wrong or what am I doing wrong?


Solution

  • Looking at the list of dictionary you posted, I think there is a problem with the way you are printing.

    I think this

    print(result['name'])
    

    should become this

    print(result[0]['name'])
    

    since you are trying to acess a dictionary inside a list. Hope it works.