Skip to content

Commit 0768a0a

Browse files
committed
fixes #23
1 parent 7f263c0 commit 0768a0a

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

apswutils/db.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -397,11 +397,16 @@ def attach(self, alias: str, filepath: Union[str, pathlib.Path]):
397397
).strip()
398398
self.execute(attach_sql)
399399

400-
def fetchone(self, sql:str, where_args: Optional[Union[Iterable, dict]] = None):
400+
def item(self, sql:str, where_args: Optional[Union[Iterable, dict]] = None):
401401
"""
402-
Execute ``sql`` and return a single row result
402+
Execute ``sql`` and return a single field from a single row
403403
"""
404-
return self.execute(sql, where_args or []).fetchone()[0]
404+
row = self.execute(sql, (where_args or [])).fetchall()
405+
if len(row)==0: raise NotFoundError
406+
elif len(row) > 1: raise ValueError(f"Not unique: {len(row)} results")
407+
res = row[0]
408+
if len(res) > 1: raise ValueError(f"Too many fields: {len(res)} fields")
409+
return res[0]
405410

406411
def query(
407412
self, sql: str, params: Optional[Union[Iterable, dict]] = None

tests/test_constructor.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,15 @@ def test_recursive_triggers_off():
1313
assert not db.execute("PRAGMA recursive_triggers").fetchone()[0]
1414

1515

16+
# This test is currently disabled since shared mem for sqlite is not recommended,
17+
# and it requires a special build.
18+
"""
1619
def test_memory_name():
1720
db1 = Database(memory_name="shared")
1821
db2 = Database(memory_name="shared")
1922
db1["dogs"].insert({"name": "Cleo"})
2023
assert list(db2["dogs"].rows) == [{"name": "Cleo"}]
24+
"""
2125

2226

2327
def test_sqlite_version():

0 commit comments

Comments
 (0)