Buscando el equivalente de dictcursor en flaskext.mysql

Escribí una aplicación de Python Flask y, inicialmente, usé MySQLdb para acceder a MySQL. Más tarde, cambié a flaskext.mysql por los mismos propósitos, pero ahora cuando uso este módulo no puedo ver cómo obtener un cursor de diccionario estructurado.

Cuando estaba usando el módulo MySQLdb, estaba usando la siguiente línea para abrir un cursor basado en diccionario:

import MySQLdb as mdb con = mdb.connect('localhost','root','root','transport') with con: cur = con.cursor(mdb.cursors.DictCursor) 

Ahora trato de hacer lo mismo con flaskext.mysql, mi código de currículum se ve así:

 from flaskext.mysql import MySQL cur = mysql.get_db().cursor() 

¿Qué debo alimentar el objeto del cursor para obtener el mismo tipo de cursor?

mysql.get_db() resultaría en tu objeto de “conexión”, puedes hacerlo:

 import MySQLdb as mdb cur = mysql.get_db().cursor(mdb.cursors.DictCursor) 

O, también puede establecer la cursorclass predeterminada al inicializar la extensión:

 mysql = MySQL(cursorclass=mdb.cursors.DictCursor) 

Creo que @alecxe estaba insinuando esto en su último bloque de código, pero puedes usar un DictCursor con la extensión Flask de la siguiente manera:

Además de la extensión MySQL de Flask, necesita el DictCursor

 from flaskext.mysql import MySQL from pymysql.cursors import DictCursor 

Luego simplemente agregue el parámetro cursorclass=DictCursor al crear el objeto MySQL:

 mysql = MySQL(cursorclass=DictCursor) 

Estoy usando esto en mi propia aplicación Flask y parece estar funcionando como se esperaba

Nota: Descubrí esta solución al acecho en un comentario en la cola de problemas en el repository de Github para el proyecto aquí . Desearía que la documentación de la biblioteca tuviera más de unas pocas líneas.