From f4f0e2afa80f182ab637e22c8988de63557c4118 Mon Sep 17 00:00:00 2001 From: shortcutme Date: Wed, 10 Jul 2019 03:14:09 +0200 Subject: [PATCH] Allow like parameters in database queries --- src/Db/DbCursor.py | 2 ++ src/Test/TestDb.py | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/src/Db/DbCursor.py b/src/Db/DbCursor.py index 274782ec..2c41c2c1 100644 --- a/src/Db/DbCursor.py +++ b/src/Db/DbCursor.py @@ -49,6 +49,8 @@ class DbCursor: else: if key.startswith("not__"): query_wheres.append(key.replace("not__", "") + " != ?") + elif key.endswith("__like"): + query_wheres.append(key.replace("__like", "") + " LIKE ?") elif key.endswith(">"): query_wheres.append(key.replace(">", "") + " > ?") elif key.endswith("<"): diff --git a/src/Test/TestDb.py b/src/Test/TestDb.py index dda2ca20..67f383a3 100644 --- a/src/Test/TestDb.py +++ b/src/Test/TestDb.py @@ -75,6 +75,11 @@ class TestDb: {"not__title": ["Test #%s" % i for i in range(50, 3000)]} ).fetchone()["num"] == 50 + assert db.execute( + "SELECT COUNT(*) AS num FROM test WHERE ?", + {"title__like": "%20%"} + ).fetchone()["num"] == 1 + # Test named parameter escaping assert db.execute( "SELECT COUNT(*) AS num FROM test WHERE test_id = :test_id AND title LIKE :titlelike",