Skip to content

Commit fb91477

Browse files
authored
stdlib(sqlite3): Raise ProgrammingError for missing named parameter (RustPython#6036)
1 parent 9499d39 commit fb91477

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

Lib/test/test_sqlite3/test_dbapi.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -908,8 +908,6 @@ def __missing__(self, key):
908908
row = self.cu.fetchone()
909909
self.assertEqual(row[0], "foo")
910910

911-
# TODO: RUSTPYTHON
912-
@unittest.expectedFailure
913911
def test_execute_dict_mapping_too_little_args(self):
914912
self.cu.execute("insert into test(name) values ('foo')")
915913
with self.assertRaises(sqlite.ProgrammingError):

stdlib/src/sqlite.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2725,7 +2725,15 @@ mod _sqlite {
27252725
let name = unsafe { name.add(1) };
27262726
let name = ptr_to_str(name, vm)?;
27272727

2728-
let val = dict.get_item(name, vm)?;
2728+
let val = match dict.get_item_opt(name, vm)? {
2729+
Some(val) => val,
2730+
None => {
2731+
return Err(new_programming_error(
2732+
vm,
2733+
format!("You did not supply a value for binding parameter :{name}.",),
2734+
));
2735+
}
2736+
};
27292737

27302738
self.bind_parameter(i, &val, vm)?;
27312739
}

0 commit comments

Comments
 (0)