2017-03-16 6 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'처럼 보입니다.하지만 말하기는 어렵습니다. 내가 찾은 유일한 문서는 짜증. 'pimysql.connect'를 ['inspect.Signature'] (https://docs.python.org/3/library/inspect.html#inspect.Signature)와 같이 introspect하려고하면 기본 인자 값을 볼 수 있습니다. – user2357112

+0

감사합니다. 내가 이것을 게시하자마자 문서화를 살펴 보았습니다. docstring에 있다면 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는 대답이다. 문서 ...