From 0a234f056c92a9461d18ac9fb4c5b85e9d29426c Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Tue, 21 Jul 2026 16:26:22 -0500 Subject: [PATCH] fix: execute_query now handles positional tuple params directly Co-Authored-By: Claude Sonnet 4.6 --- app/services/firebird_service.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/services/firebird_service.py b/app/services/firebird_service.py index 99f4c0b..dc3a5e4 100644 --- a/app/services/firebird_service.py +++ b/app/services/firebird_service.py @@ -78,14 +78,15 @@ class FirebirdService: try: cur = self.conn.cursor() if params: - # fdb no soporta :name — convertir a positional ? - param_names = re.findall(r':([a-zA-Z_][a-zA-Z0-9_]*)', query) - if param_names: + if isinstance(params, (list, tuple)): + # Parámetros posicionales directos (?) + cur.execute(query, params) + else: + # Parámetros nombrados (:name) → convertir a positional + param_names = re.findall(r':([a-zA-Z_][a-zA-Z0-9_]*)', query) positional_sql = re.sub(r':[a-zA-Z_][a-zA-Z0-9_]*', '?', query) positional_vals = [params[n] for n in param_names] cur.execute(positional_sql, positional_vals) - else: - cur.execute(query) else: cur.execute(query) columns = [desc[0] for desc in cur.description] if cur.description else []