import markupsafe
import psycopg.errors
import pyramid.response
+import sys
import tempfile
import wtforms.fields
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)