在flaskext.mysql中寻找等价的dictcursor

时间:2016-08-16 16:30:02

标签: python mysql flask

我已经编写了一个Python Flask应用程序,最初使用MySQLdb来访问MySQL。后来我为了相同的目的切换到flaskext.mysql,但现在当我使用这个模块时,我看不到如何获得字典结构光标。

当我使用MySQLdb模块时,我使用以下行来打开基于字典的游标 -

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

现在我试图用flaskext.mysql做同样的事情,我的当前代码看起来像这样 -

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

为了获得相同类型的光标,我应该为光标对象提供什么?

2 个答案:

答案 0 :(得分:4)

我认为@alecxe在他的最后一个代码块中暗示了这一点,但你可以使用 带有Flask扩展名的DictCursor如下:

除了Flask MySQL扩展,你还需要DictCursor

windows\system32

然后在创建MySQL对象时添加参数from flaskext.mysql import MySQL from pymysql.cursors import DictCursor

cursorclass=DictCursor

我在自己的Flask应用程序中使用它,它似乎按预期工作

注意:我发现这个解决方案潜伏在项目here的Github仓库中的问题队列中的注释中。我希望图书馆文档的篇幅超过几行。

答案 1 :(得分:2)

mysql.get_db()会导致您的“连接”对象,您可以这样做:

import MySQLdb as mdb

cur = mysql.get_db().cursor(mdb.cursors.DictCursor)

或者,您也可以在初始化扩展程序时设置默认cursorclass

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