From ef41dfb6069b32ff962af21497bdeffa9d4152e9 Mon Sep 17 00:00:00 2001 From: Jim Fulton Date: Wed, 18 Aug 2021 15:25:52 -0400 Subject: [PATCH 1/3] fix: supports_multivalues_insert dialect option was mispelled --- sqlalchemy_bigquery/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sqlalchemy_bigquery/base.py b/sqlalchemy_bigquery/base.py index e6403796..a51e4748 100644 --- a/sqlalchemy_bigquery/base.py +++ b/sqlalchemy_bigquery/base.py @@ -643,7 +643,7 @@ class BigQueryDialect(DefaultDialect): supports_pk_autoincrement = False supports_default_values = False supports_empty_insert = False - supports_multiline_insert = True + supports_multivalues_insert = True supports_unicode_statements = True supports_unicode_binds = True supports_native_decimal = True From 44a4f3607e61a3dd6d87c2a2741865ccfca129bf Mon Sep 17 00:00:00 2001 From: Jim Fulton Date: Thu, 19 Aug 2021 11:31:33 -0400 Subject: [PATCH 2/3] test --- tests/unit/test_sqlalchemy_bigquery.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/unit/test_sqlalchemy_bigquery.py b/tests/unit/test_sqlalchemy_bigquery.py index 78b5b3cd..b715e7be 100644 --- a/tests/unit/test_sqlalchemy_bigquery.py +++ b/tests/unit/test_sqlalchemy_bigquery.py @@ -13,6 +13,7 @@ import pytest import sqlalchemy +from conftest import setup_table @pytest.fixture def mock_bigquery_client(): @@ -158,3 +159,14 @@ def test__remove_type_from_empty_in(inp, outp): r = BigQueryExecutionContext._BigQueryExecutionContext__remove_type_from_empty_in assert r(None, inp) == outp + + +def test_multi_value_insert(faux_conn, last_query): + table = setup_table(faux_conn, "t", sqlalchemy.Column("id", sqlalchemy.Integer)) + faux_conn.execute(table.insert().values([dict(id=i) for i in range(3)])) + + last_query( + 'INSERT INTO `t` (`id`) VALUES' + ' (%(id_m0:INT64)s), (%(id_m1:INT64)s), (%(id_m2:INT64)s)', + {'id_m0': 0, 'id_m1': 1, 'id_m2': 2}, + ) From 753f30772046e4980655800f6acb0c66d70b1fa7 Mon Sep 17 00:00:00 2001 From: Jim Fulton Date: Thu, 19 Aug 2021 11:50:11 -0400 Subject: [PATCH 3/3] blacken --- tests/unit/test_sqlalchemy_bigquery.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/unit/test_sqlalchemy_bigquery.py b/tests/unit/test_sqlalchemy_bigquery.py index b715e7be..0d18a048 100644 --- a/tests/unit/test_sqlalchemy_bigquery.py +++ b/tests/unit/test_sqlalchemy_bigquery.py @@ -15,6 +15,7 @@ from conftest import setup_table + @pytest.fixture def mock_bigquery_client(): return mock.create_autospec(bigquery.Client, instance=True) @@ -166,7 +167,7 @@ def test_multi_value_insert(faux_conn, last_query): faux_conn.execute(table.insert().values([dict(id=i) for i in range(3)])) last_query( - 'INSERT INTO `t` (`id`) VALUES' - ' (%(id_m0:INT64)s), (%(id_m1:INT64)s), (%(id_m2:INT64)s)', - {'id_m0': 0, 'id_m1': 1, 'id_m2': 2}, + "INSERT INTO `t` (`id`) VALUES" + " (%(id_m0:INT64)s), (%(id_m1:INT64)s), (%(id_m2:INT64)s)", + {"id_m0": 0, "id_m1": 1, "id_m2": 2}, )