2016-08-16 55 views
2

我已經編寫了一個Python Flask應用程序,並且最初使用MySQLdb來訪問MySQL。後來爲了同樣的目的,我換成了flaskext.mysql,但現在當我使用這個模塊時,我看不到如何獲得字典結構化的遊標。在flaskext.mysql中尋找相當於dictcursor的文件

當我使用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() 

爲了得到相同類型的光標,應該給光標對象提供什麼?

回答

1

mysql.get_db()會導致到您的 「連接」 對象,你可以這樣做:

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

嘿,謝謝你的回答,但這實際上解釋了我已經取得的成就。我想知道如何執行與使用flaskext.mysql模塊描述的相同的功能,以及在哪裏可以找到更多關於它的文檔(現在我可以找到的就是這個頁面 - https://flask-mysql.readthedocs.io/ EN /最新/)。如果我提供mdb.cursors.dictcursor,它自然不起作用,因爲flaskext無法識別遊標類型。 –

+0

不是我一直在尋找的答案,但是由於它讓我看到了事實,我不必使用flaskext,而且使用mysqldb更好,我認爲它足夠好。謝謝! –

2

我想@alecxe:

import MySQLdb as mdb 

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

或者,您也可以初始化擴展名,當設置默認cursorclass在他的最後一個代碼塊中暗示了這一點,但您可以使用 帶Flask擴展名的DictCursor,如下所示:

還有瓶MySQL擴展你需要的DictCursor

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

然後只需創建MySQL的對象時添加參數cursorclass=DictCursor

mysql = MySQL(cursorclass=DictCursor) 

我使用這個在我自己的瓶應用程序,它似乎按預期工作

注意:我發現此解決方案潛伏在Github回購項目here的問題隊列中。我確實希望圖書館的文件長度超過幾行。