Python execute的返回值

Python execute的返回值,python,python-3.x,sqlite,Python,Python 3.x,Sqlite,是否总是self的返回值?i、 e.我能否安全地返回一些连接对象。执行(…)或使用方法链接?我无法在该文档中找到相关文本。当文档失败时,请查看代码(python 3.6.4): 在_pysqlite_query_execute函数末尾: if (PyErr_Occurred()) { self->rowcount = -1L; return NULL; } else { Py_INCREF(self); ret

是否总是self的返回值?i、 e.我能否安全地
返回一些连接对象。执行(…)
或使用方法链接?我无法在该文档中找到相关文本。

当文档失败时,请查看代码(python 3.6.4):

在_pysqlite_query_execute函数末尾:

    if (PyErr_Occurred()) {
        self->rowcount = -1L;
        return NULL;
    } else {
        Py_INCREF(self);
        return (PyObject*)self;
    }
}

PyObject* pysqlite_cursor_execute(pysqlite_Cursor* self, PyObject* args)
{
    return _pysqlite_query_execute(self, 0, args);
}
因此,除非发生错误,否则该方法将返回self

但是,根据(对于DBAPI2),没有定义返回值,这意味着您需要自己处理,并且您以这种方式编写的代码可能无法在不同的DBAPI2实现之间移植。实际上,根据
,execute
返回
None


答案是,不能从更广泛的意义上安全地链接方法,因为这样做限制了未来代码重用的可能性。

我不研究代码,因为我认为它是实现细节,不能依赖。无论如何,我会避免使用这个功能(因为缺少文档),只是想确保我没有忽略一些东西。