gh-93925: Improve clarity of sqlite3 commit/rollback, and close docs (GH-93926)

Co-authored-by: CAM Gerlach <CAM.Gerlach@Gerlach.CAM>
(cherry picked from commit 6446592c89)

Co-authored-by: Erlend Egeberg Aasland <erlend.aasland@innova.no>
This commit is contained in:
Miss Islington (bot) 2022-06-19 12:44:48 -07:00 committed by GitHub
parent 1073184918
commit 8b068c4b0c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 30 additions and 19 deletions

View File

@ -413,21 +413,20 @@ Connection Objects
.. method:: commit() .. method:: commit()
This method commits the current transaction. If you don't call this method, Commit any pending transaction to the database.
anything you did since the last call to ``commit()`` is not visible from If there is no open transaction, this method is a no-op.
other database connections. If you wonder why you don't see the data you've
written to the database, please check you didn't forget to call this method.
.. method:: rollback() .. method:: rollback()
This method rolls back any changes to the database since the last call to Roll back to the start of any pending transaction.
:meth:`commit`. If there is no open transaction, this method is a no-op.
.. method:: close() .. method:: close()
This closes the database connection. Note that this does not automatically Close the database connection.
call :meth:`commit`. If you just close your database connection without Any pending transaction is not committed implicitly;
calling :meth:`commit` first, your changes will be lost! make sure to :meth:`commit` before closing
to avoid losing pending changes.
.. method:: execute(sql[, parameters]) .. method:: execute(sql[, parameters])

View File

@ -248,7 +248,9 @@ PyDoc_STRVAR(pysqlite_connection_close__doc__,
"close($self, /)\n" "close($self, /)\n"
"--\n" "--\n"
"\n" "\n"
"Closes the connection."); "Close the database connection.\n"
"\n"
"Any pending transaction is not committed implicitly.");
#define PYSQLITE_CONNECTION_CLOSE_METHODDEF \ #define PYSQLITE_CONNECTION_CLOSE_METHODDEF \
{"close", (PyCFunction)pysqlite_connection_close, METH_NOARGS, pysqlite_connection_close__doc__}, {"close", (PyCFunction)pysqlite_connection_close, METH_NOARGS, pysqlite_connection_close__doc__},
@ -266,7 +268,9 @@ PyDoc_STRVAR(pysqlite_connection_commit__doc__,
"commit($self, /)\n" "commit($self, /)\n"
"--\n" "--\n"
"\n" "\n"
"Commit the current transaction."); "Commit any pending transaction to the database.\n"
"\n"
"If there is no open transaction, this method is a no-op.");
#define PYSQLITE_CONNECTION_COMMIT_METHODDEF \ #define PYSQLITE_CONNECTION_COMMIT_METHODDEF \
{"commit", (PyCFunction)pysqlite_connection_commit, METH_NOARGS, pysqlite_connection_commit__doc__}, {"commit", (PyCFunction)pysqlite_connection_commit, METH_NOARGS, pysqlite_connection_commit__doc__},
@ -284,7 +288,9 @@ PyDoc_STRVAR(pysqlite_connection_rollback__doc__,
"rollback($self, /)\n" "rollback($self, /)\n"
"--\n" "--\n"
"\n" "\n"
"Roll back the current transaction."); "Roll back to the start of any pending transaction.\n"
"\n"
"If there is no open transaction, this method is a no-op.");
#define PYSQLITE_CONNECTION_ROLLBACK_METHODDEF \ #define PYSQLITE_CONNECTION_ROLLBACK_METHODDEF \
{"rollback", (PyCFunction)pysqlite_connection_rollback, METH_NOARGS, pysqlite_connection_rollback__doc__}, {"rollback", (PyCFunction)pysqlite_connection_rollback, METH_NOARGS, pysqlite_connection_rollback__doc__},
@ -1231,4 +1237,4 @@ exit:
#ifndef DESERIALIZE_METHODDEF #ifndef DESERIALIZE_METHODDEF
#define DESERIALIZE_METHODDEF #define DESERIALIZE_METHODDEF
#endif /* !defined(DESERIALIZE_METHODDEF) */ #endif /* !defined(DESERIALIZE_METHODDEF) */
/*[clinic end generated code: output=fb8908674e9f25ff input=a9049054013a1b77]*/ /*[clinic end generated code: output=8818c1c3ec9425aa input=a9049054013a1b77]*/

View File

@ -470,12 +470,14 @@ blobopen_impl(pysqlite_Connection *self, const char *table, const char *col,
/*[clinic input] /*[clinic input]
_sqlite3.Connection.close as pysqlite_connection_close _sqlite3.Connection.close as pysqlite_connection_close
Closes the connection. Close the database connection.
Any pending transaction is not committed implicitly.
[clinic start generated code]*/ [clinic start generated code]*/
static PyObject * static PyObject *
pysqlite_connection_close_impl(pysqlite_Connection *self) pysqlite_connection_close_impl(pysqlite_Connection *self)
/*[clinic end generated code: output=a546a0da212c9b97 input=3d58064bbffaa3d3]*/ /*[clinic end generated code: output=a546a0da212c9b97 input=b3ed5b74f6fefc06]*/
{ {
if (!pysqlite_check_thread(self)) { if (!pysqlite_check_thread(self)) {
return NULL; return NULL;
@ -522,12 +524,14 @@ int pysqlite_check_connection(pysqlite_Connection* con)
/*[clinic input] /*[clinic input]
_sqlite3.Connection.commit as pysqlite_connection_commit _sqlite3.Connection.commit as pysqlite_connection_commit
Commit the current transaction. Commit any pending transaction to the database.
If there is no open transaction, this method is a no-op.
[clinic start generated code]*/ [clinic start generated code]*/
static PyObject * static PyObject *
pysqlite_connection_commit_impl(pysqlite_Connection *self) pysqlite_connection_commit_impl(pysqlite_Connection *self)
/*[clinic end generated code: output=3da45579e89407f2 input=39c12c04dda276a8]*/ /*[clinic end generated code: output=3da45579e89407f2 input=c8793c97c3446065]*/
{ {
if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) { if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) {
return NULL; return NULL;
@ -557,12 +561,14 @@ pysqlite_connection_commit_impl(pysqlite_Connection *self)
/*[clinic input] /*[clinic input]
_sqlite3.Connection.rollback as pysqlite_connection_rollback _sqlite3.Connection.rollback as pysqlite_connection_rollback
Roll back the current transaction. Roll back to the start of any pending transaction.
If there is no open transaction, this method is a no-op.
[clinic start generated code]*/ [clinic start generated code]*/
static PyObject * static PyObject *
pysqlite_connection_rollback_impl(pysqlite_Connection *self) pysqlite_connection_rollback_impl(pysqlite_Connection *self)
/*[clinic end generated code: output=b66fa0d43e7ef305 input=12d4e8d068942830]*/ /*[clinic end generated code: output=b66fa0d43e7ef305 input=7f60a2f1076f16b3]*/
{ {
if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) { if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) {
return NULL; return NULL;