cursor.MySQLCursorDict Class
5.9.6.4 cursor.MySQLCursorDict Class
The MySQLCursorDict
class inherits from MySQLCursor
. This class is available as of Connector/Python 2.0.0.
A MySQLCursorDict
cursor returns each row as a dictionary. The keys for each dictionary object are the column names of the MySQL result.
Example:
cnx = mysql.connector.connect(database='world') cursor = cnx.cursor(dictionary=True) cursor.execute("SELECT * FROM country WHERE Continent = 'Europe'") print("Countries in Europe:") for row in cursor: print("* {Name}".format(Name=row['Name']
The preceding code produces output like this:
Countries in Europe: * Albania * Andorra * Austria * Belgium * Bulgaria ...
It may be convenient to pass the dictionary to format()
as follows:
cursor.execute("SELECT Name, Population FROM country WHERE Continent = 'Europe'") print("Countries in Europe with population:") for row in cursor: print("* {Name}: {Population}".format(**row))
User Comments
==============
10.5.11 MySQLCursor.column_names Property
Syntax:
sequence = cursor.column_names
This read-only property returns the column names of a result set as sequence of Unicode strings.
The following example shows how to create a dictionary from a tuple containing data with keys using column_names
:
cursor.execute("SELECT last_name, first_name, hire_date " "FROM employees WHERE emp_no = %s", (123,)) row = dict(zip(cursor.column_names, cursor.fetchone())) print("{last_name}, {first_name}: {hire_date}".format(row))
Alternatively, as of Connector/Python 2.0.0, you can fetch rows as dictionaries directly; see Section 10.6.4, “cursor.MySQLCursorDict Class”.
What Doesn't Kill Me Makes Me Stronger
cursor.callproc(stored_procedure_name, args)
result = []
for recordset in cursor.stored_results():
for row in recordset:
result.append(dict(zip(recordset.column_names,row)))