diff --git a/databend_py/uploader.py b/databend_py/uploader.py index 14411b4..1e98956 100644 --- a/databend_py/uploader.py +++ b/databend_py/uploader.py @@ -72,11 +72,11 @@ def _serialize_data(self, data, compress): buf = io.StringIO() csvwriter = csv.writer(buf, delimiter=',', quoting=csv.QUOTE_MINIMAL) csvwriter.writerows(data) - output = buf.getvalue() + output = buf.getvalue().encode('utf-8') if compress: buf = io.BytesIO() with gzip.GzipFile(fileobj=buf, mode="wb") as gzwriter: - gzwriter.write(output.encode('utf-8')) + gzwriter.write(output) output = buf.getvalue() if self._debug: print('upload:_serialize_data %s' % (time.time() - start_time)) diff --git a/tests/test_client.py b/tests/test_client.py index 93fc40f..267ba05 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -198,6 +198,13 @@ def test_null_to_none(self): _, data = client.execute("select NULL as test") self.assertIsNone(data[0][0]) + def test_special_chars(self): + client = Client.from_url(self.databend_url) + client.execute("create or replace table test_special_chars (x string)") + client.execute("INSERT INTO test_special_chars (x) VALUES", [('ó')]) + _, data = client.execute("select * from test_special_chars") + self.assertEqual(data, [('ó')]) + def test_set_query_id_header(self): os.environ["ADDITIONAL_HEADERS"] = "X-DATABENDCLOUD-TENANT=TENANT,X-DATABENDCLOUD-WAREHOUSE=WAREHOUSE" client = Client.from_url(self.databend_url)