【发布时间】:2017-08-08 05:45:49
【问题描述】:
这可能是一个愚蠢的问题,但我在 pymysql 的文档中找不到相关信息。什么是 pymysql 默认游标类?当我没有在连接到数据库时指定游标类时,我的查询会为响应中的每一行返回一个列表。
当我指定 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
并让它默认为默认的光标类,但我更愿意明确。
【问题讨论】:
-
貌似是
pymysql.cursors.Cursor,但很难说。我发现的唯一文档很烂。您可以尝试使用inspect.Signature之类的东西自省pymysql.connect以查看默认参数值。 -
谢谢!一旦我发布了这个,我就想到查看文档字符串。如果它在文档字符串中,我不知道为什么 RTD 页面上没有完整的 API 参考...