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 diff --git a/tests/unit/test_sqlalchemy_bigquery.py b/tests/unit/test_sqlalchemy_bigquery.py index 78b5b3cd..0d18a048 100644 --- a/tests/unit/test_sqlalchemy_bigquery.py +++ b/tests/unit/test_sqlalchemy_bigquery.py @@ -13,6 +13,8 @@ import pytest import sqlalchemy +from conftest import setup_table + @pytest.fixture def mock_bigquery_client(): @@ -158,3 +160,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}, + )