From a9f804d33bada995d7c12f1a3326851e45d5e06b Mon Sep 17 00:00:00 2001 From: florian <f.spreckelsen@inidscale.com> Date: Fri, 7 Oct 2022 14:27:44 +0200 Subject: [PATCH] WIP: Replace single quotes in query --- src/caoscrawler/identifiable_adapters.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/caoscrawler/identifiable_adapters.py b/src/caoscrawler/identifiable_adapters.py index 0b00cbea..6399bd49 100644 --- a/src/caoscrawler/identifiable_adapters.py +++ b/src/caoscrawler/identifiable_adapters.py @@ -52,8 +52,11 @@ def convert_value(value): return str(value.id) elif isinstance(value, datetime): return value.isoformat() + elif isinstance(value, str): + # replace single quotes, otherwise they may break the queries + return str(value.replace("'", "\'")) else: - return str(value) + return value class IdentifiableAdapter(metaclass=ABCMeta): @@ -387,7 +390,8 @@ class LocalStorageIdentifiableAdapter(IdentifiableAdapter): if self.check_record(record, identifiable): candidates.append(record) if len(candidates) > 1: - raise RuntimeError("Identifiable was not defined unambigiously.") + raise RuntimeError( + f"Identifiable was not defined unambigiously. Possible candidates are {candidates}") if len(candidates) == 0: return None return candidates[0] @@ -469,7 +473,8 @@ class CaosDBIdentifiableAdapter(IdentifiableAdapter): query_string = self.create_query_for_identifiable(identifiable) candidates = db.execute_query(query_string) if len(candidates) > 1: - raise RuntimeError("Identifiable was not defined unambigiously.") + raise RuntimeError( + f"Identifiable was not defined unambigiously.\n{query_string}\nReturned the following {candidates}.") if len(candidates) == 0: return None return candidates[0] -- GitLab