From fec86f7593bd98949928b0507d29895d4a0f14c9 Mon Sep 17 00:00:00 2001 From: "Karl O. Pinc" Date: Sun, 29 Sep 2024 16:43:35 -0500 Subject: [PATCH] Fix so text columns containing numbers are downloaded as text --- src/pgwui_sql/views/sql.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/pgwui_sql/views/sql.py b/src/pgwui_sql/views/sql.py index afc0d9b..b3acd11 100644 --- a/src/pgwui_sql/views/sql.py +++ b/src/pgwui_sql/views/sql.py @@ -26,6 +26,7 @@ import logging import markupsafe import psycopg.errors import pyramid.response +import sys import tempfile import wtforms.fields @@ -268,11 +269,19 @@ class SQLResultsHandler(pgwui_core.core.SessionDBHandler): return sql return f'SET search_path TO {self.search_path};\n{sql}' + def make_csv_writer(self): + vinfo = sys.version_info + if vinfo.major >= 3 and vinfo.minor >= 12: + quoting = csv.QUOTE_STRINGS + else: + quoting = csv.QUOTE_NONNUMERIC + return csv.writer(self.tfile, quoting=quoting) + def make_download(self, sql_results): downloading = self.uf['download'] if downloading: self.tfile = tempfile.TemporaryFile(mode='w+t', newline='') - writer = csv.writer(self.tfile) + writer = self.make_csv_writer() for sql_result in sql_results: writer.writerow((sql_result.statusmessage.data,)) writer.writerow(sql_result.heading.data) -- 2.34.1