From: Christian Heller <c.heller@plomlompom.de>
Date: Tue, 18 Feb 2025 10:54:35 +0000 (+0100)
Subject: For reading DbData tables, add check for DbData._cols equal in number to encountered... 
X-Git-Url: https://plomlompom.com/repos/%7B%7Bprefix%7D%7D/static/%7B%7B%20web_path%20%7D%7D/%7B%7Bdb.prefix%7D%7D/template?a=commitdiff_plain;h=6ce6a2db7a7747be9c34c8e2fa1496a2c658f670;p=ytplom

For reading DbData tables, add check for DbData._cols equal in number to encountered row columns.
---

diff --git a/src/ytplom/db.py b/src/ytplom/db.py
index 3bf7198..45af7cf 100644
--- a/src/ytplom/db.py
+++ b/src/ytplom/db.py
@@ -111,6 +111,12 @@ class DbData:
 
     @classmethod
     def _from_table_row(cls, row: SqlRow) -> Self:
+        n_cols_row, n_cols_class = len(row), len(cls._cols)
+        if n_cols_row != n_cols_class:
+            raise HandledException(
+                'Trouble reading table row for {cls.__name__}: number of row '
+                f'columns ({n_cols_row}) unequal number expected by class '
+                f'({n_cols_class}). Maybe DB schema wrong/unmigrated?')
         kwargs = {}
         for i, col_name in enumerate(cls._cols):
             kwargs[col_name] = row[i]