diff options
author | Anders Lorentsen <Phaqui@gmail.com> | 2017-11-07 00:47:43 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2017-11-07 00:47:43 (GMT) |
commit | a22a127458d75b9b7e65e058f5db5ff705df5696 (patch) | |
tree | 02671d0bdaea01716305c713cc3a67433318aed2 /Modules/_sqlite | |
parent | edb13ae48c17210fa4b2d40a6833ca09db5c121b (diff) | |
download | cpython-a22a127458d75b9b7e65e058f5db5ff705df5696.zip cpython-a22a127458d75b9b7e65e058f5db5ff705df5696.tar.gz cpython-a22a127458d75b9b7e65e058f5db5ff705df5696.tar.bz2 |
bpo-31843: sqlite3.connect() now accepts PathLike objects as database name (#4299)
Diffstat (limited to 'Modules/_sqlite')
-rw-r--r-- | Modules/_sqlite/connection.c | 9 | ||||
-rw-r--r-- | Modules/_sqlite/module.c | 4 |
2 files changed, 9 insertions, 4 deletions
diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 70e56aa..57eee2d 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -76,6 +76,7 @@ int pysqlite_connection_init(pysqlite_Connection* self, PyObject* args, PyObject }; char* database; + PyObject* database_obj; int detect_types = 0; PyObject* isolation_level = NULL; PyObject* factory = NULL; @@ -85,14 +86,16 @@ int pysqlite_connection_init(pysqlite_Connection* self, PyObject* args, PyObject double timeout = 5.0; int rc; - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|diOiOip", kwlist, - &database, &timeout, &detect_types, + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O&|diOiOip", kwlist, + PyUnicode_FSConverter, &database_obj, &timeout, &detect_types, &isolation_level, &check_same_thread, &factory, &cached_statements, &uri)) { return -1; } + database = PyBytes_AsString(database_obj); + self->initialized = 1; self->begin_statement = NULL; @@ -124,6 +127,8 @@ int pysqlite_connection_init(pysqlite_Connection* self, PyObject* args, PyObject #endif Py_END_ALLOW_THREADS + Py_DECREF(database_obj); + if (rc != SQLITE_OK) { _pysqlite_seterror(self->db, NULL); return -1; diff --git a/Modules/_sqlite/module.c b/Modules/_sqlite/module.c index ffb7118..9066c32 100644 --- a/Modules/_sqlite/module.c +++ b/Modules/_sqlite/module.c @@ -55,7 +55,7 @@ static PyObject* module_connect(PyObject* self, PyObject* args, PyObject* "check_same_thread", "factory", "cached_statements", "uri", NULL }; - char* database; + PyObject* database; int detect_types = 0; PyObject* isolation_level; PyObject* factory = NULL; @@ -66,7 +66,7 @@ static PyObject* module_connect(PyObject* self, PyObject* args, PyObject* PyObject* result; - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|diOiOip", kwlist, + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|diOiOip", kwlist, &database, &timeout, &detect_types, &isolation_level, &check_same_thread, &factory, &cached_statements, &uri)) |