2017-03-16 64 views
0

這可能是一個愚蠢的問題,但我找不到pymysql文檔中的信息。什麼是pymysql默認遊標類?當我沒有指定與數據庫連接的遊標類時,我的查詢返回響應中每一行的列表。pymysql - 默認遊標類名稱

當我指定pymysql.cursors.DictCursor時,我得到一個字典響應。我希望能夠在它們之間更改腳本中的不同連接。

我已經寫了一個帶有上下文管理器的小函數來產生遊標,但它需要我每次指定遊標類的名稱。我知道我可以解決這個問題,但知道默認cursorclass的名字會很好。

from contextlib import contextmanager 
import pymysql 

@contextmanager                                                        
def openDb(host=DB_HOST, database=DB_DATABASE,                                              
      user=DB_USER, cursor=DB_CURSOR):                                               
    """                                                          
    Simple context manager for opening a db connection                                               
    """                                                          
    with pymysql.connect(host=host, database=database, user=user,                                            
         cursorclass=cursor) as cur:                                               
     yield cur 

我大概可以寫爲:

@contextmanager                                                        
def openDb(host=DB_HOST, database=DB_DATABASE,                                              
      user=DB_USER, cursor=None):                                               
    """                                                          
    Simple context manager for opening a db connection                                               
    """ 
    if cursor:                                                         
     with pymysql.connect(host=host, database=database, user=user,                                            
          cursorclass=cursor) as cur:                                               
      yield cur 
    else: 
     with pymysql.connect(host=host, database=database, user=user) as cur:                                                                                  
      yield cur 

,並讓它默認爲任何默認cursorclass是的,但我寧願是明確的。

+0

它看起來像是'pymysql.cursors.Cursor',但很難說。我發現的唯一文檔很爛。你可以用''inspect.Signature'](https://docs.python.org/3/library/inspect.html#inspect.Signature)來查看'pymysql.connect'來查看默認參數值。 – user2357112

+0

謝謝!只要我發佈這一點,我想到了在文檔中查找。如果它在文檔中,我不知道爲什麼在RTD頁面上沒有完整的API參考... –

回答

0

當然,只要我這後我發現通過答案:

>>> import pymysql                                                        
>>> help(pymysql.cursors) 

Help on module pymysql.cursors in pymysql: 

NAME 
    pymysql.cursors - # -*- coding: utf-8 -*- 

CLASSES 
    builtins.object 
     Cursor 
      SSCursor 
     DictCursorMixin 
      DictCursor(DictCursorMixin, Cursor) 
      SSDictCursor(DictCursorMixin, SSCursor) 

pymysql.cursors.Cursor就是答案。 Documentation ...