aboutsummaryrefslogtreecommitdiff
path: root/wqflask/utility
diff options
context:
space:
mode:
Diffstat (limited to 'wqflask/utility')
-rw-r--r--wqflask/utility/monads.py26
1 files changed, 7 insertions, 19 deletions
diff --git a/wqflask/utility/monads.py b/wqflask/utility/monads.py
index 3360fad2..2d708261 100644
--- a/wqflask/utility/monads.py
+++ b/wqflask/utility/monads.py
@@ -105,22 +105,10 @@ class MonadicDict(UserDict):
except KeyError:
pass
-class MonadicDictCursor(DictCursor):
- """Monadic version of MySQLdb.cursors.DictCursor.
-
- Monadic version of MySQLdb.cursors.DictCursor that returns a
- MonadicDict instead of the built-in dictionary.
-
- Execute a SQL query and retrieve results as MonadicDict
- objects. Each row object in the following code is a MonadicDict.
- >>> with conn.cursor(MonadicDictCursor) as cursor:
- ... cursor.execute("SELECT foo FROM bar")
- ... for row in cursor.fetchall():
- ... print(row)
- """
- def fetchone(self):
- return Just(MonadicDict(row)) if (row := super().fetchone()) else Nothing
- def fetchmany(self, size=None):
- return [MonadicDict(row) for row in super().fetchmany(size=size)]
- def fetchall(self):
- return [MonadicDict(row) for row in super().fetchall()]
+
+def sql_query_mdict(conn, query):
+ """Execute SQL query and return a generator of MonadicDict objects."""
+ with conn.cursor(DictCursor) as cursor:
+ cursor.execute(query)
+ while (row := cursor.fetchone()):
+ yield MonadicDict(row)