sqlite3.execute
的返回值是否总是自我?即我可以安全地return some_connection_obj.execute(...)
或使用方法链接吗?我在该文件中找不到相关文字。
答案 0 :(得分:1)
当文档失败时,请查看代码(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。
但是,根据PEP 249(对于DB API 2),未定义返回值,这意味着您可以自己使用,并且您以这种方式编写的代码可能无法在不同的DB API 2之间移植实现。事实上,根据psycopg docs .execute
返回None
。
答案是,人们无法在更广泛的意义上安全地链接方法,因为这样做会限制未来的代码重用可能性。