From be1eb14fd0dc41b164d1003540a9e3ffd5cc0dc0 Mon Sep 17 00:00:00 2001 From: Ivanq Date: Sat, 30 Dec 2017 10:06:05 +0300 Subject: [PATCH 1/3] Handle dict value being a list --- src/Db/DbCursor.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/Db/DbCursor.py b/src/Db/DbCursor.py index e4d52254..273ac003 100644 --- a/src/Db/DbCursor.py +++ b/src/Db/DbCursor.py @@ -47,6 +47,21 @@ class DbCursor: keysvalues = "(%s) VALUES (%s)" % (keys, values) query = re.sub("(.*)[?]", "\\1%s" % keysvalues, query) # Replace the last ? params = tuple(params.values()) + elif isinstance(params, dict) and ":" in query: + new_params = dict() + values = [] + for key, value in params.items(): + if type(value) is list: + for idx, val in enumerate(value): + new_params[key + "__" + idx] = val + + new_names = [":" + key + "__" + idx for idx in range(len(value))] + query = re.sub(r":" + re.escape(key) + "[)\s]", ", ".join(new_names)) + else: + new_params[key] = value + + params = new_params + s = time.time() # if query == "COMMIT": self.logging = True # Turn logging back on transaction commit From d97631fb8c7c96797e5af67212df95d542a519b3 Mon Sep 17 00:00:00 2001 From: Ivanq Date: Sat, 30 Dec 2017 12:06:07 +0300 Subject: [PATCH 2/3] str() --- src/Db/DbCursor.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Db/DbCursor.py b/src/Db/DbCursor.py index 273ac003..5b5795b6 100644 --- a/src/Db/DbCursor.py +++ b/src/Db/DbCursor.py @@ -53,9 +53,9 @@ class DbCursor: for key, value in params.items(): if type(value) is list: for idx, val in enumerate(value): - new_params[key + "__" + idx] = val + new_params[key + "__" + str(idx)] = val - new_names = [":" + key + "__" + idx for idx in range(len(value))] + new_names = [":" + key + "__" + str(idx) for idx in range(len(value))] query = re.sub(r":" + re.escape(key) + "[)\s]", ", ".join(new_names)) else: new_params[key] = value From 8986d8037aad43b7c676ad9f1afa982f2ef546d8 Mon Sep 17 00:00:00 2001 From: Ivanq Date: Sat, 30 Dec 2017 12:07:28 +0300 Subject: [PATCH 3/3] Typos --- src/Db/DbCursor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Db/DbCursor.py b/src/Db/DbCursor.py index 5b5795b6..4301a718 100644 --- a/src/Db/DbCursor.py +++ b/src/Db/DbCursor.py @@ -56,7 +56,7 @@ class DbCursor: new_params[key + "__" + str(idx)] = val new_names = [":" + key + "__" + str(idx) for idx in range(len(value))] - query = re.sub(r":" + re.escape(key) + "[)\s]", ", ".join(new_names)) + query = re.sub(r":" + re.escape(key) + r"([)\s])", ", ".join(new_names) + r"\1", query) else: new_params[key] = value