Skip to content

Commit 1706b00

Browse files
committed
stdlib(sqlite3): Raise ProgrammingError for missing named parameter
1 parent 9499d39 commit 1706b00

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-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: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2725,7 +2725,18 @@ 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!(
2734+
"You did not supply a value for binding parameter :{}.",
2735+
name
2736+
),
2737+
));
2738+
}
2739+
};
27292740

27302741
self.bind_parameter(i, &val, vm)?;
27312742
}

0 commit comments

Comments
 (0)