pymysql - 默认cursorclass的名称

时间:2017-03-16 20:46:16

标签: python pymysql

这可能是一个愚蠢的问题,但我找不到pymysql文档中的信息。什么是pymysql默认的cursorclass?当我没有在连接到数据库时指定游标类时,我的查询返回响应中每一行的列表。

当我指定pymysql.cursors.DictCursor时,我得到一个字典响应。我希望能够在脚本中为不同的连接进行更改。

我用上下文管理器编写了一个小函数来生成游标,但它要求我每次都指定游标类的名称。我知道我可以解决这个问题,但是知道默认游标类的名称会很好。

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,但我更喜欢显式。

1 个答案:

答案 0 :(得分:1)

当然,只要我发布这个,我就会在via中找到答案:

>>> 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就是答案。文档...