2017-03-16 36 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 ...