mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
gh-101693: In sqlite3, deprecate using named placeholders with parameters supplied as a sequence (#101698)
This commit is contained in:
parent
d777790bab
commit
8a2b7ee64d
5 changed files with 59 additions and 1 deletions
|
@ -662,6 +662,19 @@ bind_parameters(pysqlite_state *state, pysqlite_Statement *self,
|
|||
return;
|
||||
}
|
||||
for (i = 0; i < num_params; i++) {
|
||||
const char *name = sqlite3_bind_parameter_name(self->st, i+1);
|
||||
if (name != NULL) {
|
||||
int ret = PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
|
||||
"Binding %d ('%s') is a named parameter, but you "
|
||||
"supplied a sequence which requires nameless (qmark) "
|
||||
"placeholders. Starting with Python 3.14 an "
|
||||
"sqlite3.ProgrammingError will be raised.",
|
||||
i+1, name);
|
||||
if (ret < 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (PyTuple_CheckExact(parameters)) {
|
||||
PyObject *item = PyTuple_GET_ITEM(parameters, i);
|
||||
current_param = Py_NewRef(item);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue