diff --git a/Lib/test/test_sqlite3/test_factory.py b/Lib/test/test_sqlite3/test_factory.py index 299b514cff3..1c1660267d6 100644 --- a/Lib/test/test_sqlite3/test_factory.py +++ b/Lib/test/test_sqlite3/test_factory.py @@ -128,7 +128,6 @@ def test_custom_factory(self): row = self.con.execute("select 1, 2").fetchone() self.assertIsInstance(row, list) - @unittest.expectedFailure # TODO: RUSTPYTHON def test_sqlite_row_index(self): row = self.con.execute("select 1 as a_1, 2 as b").fetchone() self.assertIsInstance(row, sqlite.Row) diff --git a/crates/stdlib/src/_sqlite3.rs b/crates/stdlib/src/_sqlite3.rs index f5b02422faf..3509df46789 100644 --- a/crates/stdlib/src/_sqlite3.rs +++ b/crates/stdlib/src/_sqlite3.rs @@ -2380,7 +2380,9 @@ mod _sqlite3 { fn subscript(&self, needle: &PyObject, vm: &VirtualMachine) -> PyResult { if let Some(i) = needle.downcast_ref::() { - let i = i.try_to_primitive::(vm)?; + let i = i.try_to_primitive::(vm).map_err(|_| { + vm.new_index_error("cannot fit 'int' into an index-sized integer") + })?; self.data.as_slice().getitem_by_index(vm, i) } else if let Some(name) = needle.downcast_ref::() { for (obj, i) in self.description.as_slice().iter().zip(0..) {