I've written a Python Flask app, and initially used MySQLdb to access MySQL. Later I've switched to flaskext.mysql for the same purposes, but now when I use this module I cannot see how to get a dictionary structured cursor.
When I using the MySQLdb module I was using the following line to open a dictionary based cursor -
import MySQLdb as mdb
con = mdb.connect('localhost','root','root','transport')
with con:
cur = con.cursor(mdb.cursors.DictCursor)
Now I'm trying to do the same with flaskext.mysql, my currect code looks like this -
from flaskext.mysql import MySQL
cur = mysql.get_db().cursor()
What should I feed the cursor object in order to get the same type of cursor?
I think @alecxe was hinting at this in his last code block, but you can use a DictCursor with the Flask extension as follows:
As well as the Flask MySQL extension you need the DictCursor
from flaskext.mysql import MySQL
from pymysql.cursors import DictCursor
Then simply add the parameter cursorclass=DictCursor
when creating the MySQL object:
mysql = MySQL(cursorclass=DictCursor)
I'm using this in my own Flask app and it seems to be working as expected
Note: I discovered this solution lurking in a comment in the issue queue in the Github repo for the project here. I do wish the library documentation was more than a few lines long.
mysql.get_db()
would result into your "connection" object, you can do:
import MySQLdb as mdb
cur = mysql.get_db().cursor(mdb.cursors.DictCursor)
Or, you can also set the default cursorclass
when initializing the extension:
mysql = MySQL(cursorclass=mdb.cursors.DictCursor)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With