From 1706b00e5f827c94f77056c337f49e9e7bb5cd5c Mon Sep 17 00:00:00 2001 From: Jiseok CHOI Date: Fri, 25 Jul 2025 18:12:34 +0900 Subject: [PATCH 1/2] stdlib(sqlite3): Raise ProgrammingError for missing named parameter --- Lib/test/test_sqlite3/test_dbapi.py | 2 -- stdlib/src/sqlite.rs | 13 ++++++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Lib/test/test_sqlite3/test_dbapi.py b/Lib/test/test_sqlite3/test_dbapi.py index 6c95a887a32..12cd9974187 100644 --- a/Lib/test/test_sqlite3/test_dbapi.py +++ b/Lib/test/test_sqlite3/test_dbapi.py @@ -908,8 +908,6 @@ def __missing__(self, key): row = self.cu.fetchone() self.assertEqual(row[0], "foo") - # TODO: RUSTPYTHON - @unittest.expectedFailure def test_execute_dict_mapping_too_little_args(self): self.cu.execute("insert into test(name) values ('foo')") with self.assertRaises(sqlite.ProgrammingError): diff --git a/stdlib/src/sqlite.rs b/stdlib/src/sqlite.rs index 973fc431f82..4d5b447654d 100644 --- a/stdlib/src/sqlite.rs +++ b/stdlib/src/sqlite.rs @@ -2725,7 +2725,18 @@ mod _sqlite { let name = unsafe { name.add(1) }; let name = ptr_to_str(name, vm)?; - let val = dict.get_item(name, vm)?; + let val = match dict.get_item_opt(name, vm)? { + Some(val) => val, + None => { + return Err(new_programming_error( + vm, + format!( + "You did not supply a value for binding parameter :{}.", + name + ), + )); + } + }; self.bind_parameter(i, &val, vm)?; } From 203c9d3021e56de24f8741fa0f686ebd28137175 Mon Sep 17 00:00:00 2001 From: Jiseok CHOI Date: Fri, 25 Jul 2025 18:15:11 +0900 Subject: [PATCH 2/2] clippy --- stdlib/src/sqlite.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/stdlib/src/sqlite.rs b/stdlib/src/sqlite.rs index 4d5b447654d..8db90a7bba0 100644 --- a/stdlib/src/sqlite.rs +++ b/stdlib/src/sqlite.rs @@ -2730,10 +2730,7 @@ mod _sqlite { None => { return Err(new_programming_error( vm, - format!( - "You did not supply a value for binding parameter :{}.", - name - ), + format!("You did not supply a value for binding parameter :{name}.",), )); } };