From 26ab9240016cbd2470b06d7b80a0a472ebb180e0 Mon Sep 17 00:00:00 2001 From: Sandeep Akode Date: Wed, 30 Oct 2024 14:43:57 +0530 Subject: [PATCH 1/2] fix: add JSON type compiler support Fixes #399 --- sqlalchemy_bigquery/_types.py | 2 ++ sqlalchemy_bigquery/base.py | 3 +++ 2 files changed, 5 insertions(+) diff --git a/sqlalchemy_bigquery/_types.py b/sqlalchemy_bigquery/_types.py index 8399e978..7fdd1fa3 100644 --- a/sqlalchemy_bigquery/_types.py +++ b/sqlalchemy_bigquery/_types.py @@ -47,6 +47,7 @@ "STRUCT": STRUCT, "TIMESTAMP": sqlalchemy.types.TIMESTAMP, "TIME": sqlalchemy.types.TIME, + "JSON": sqlalchemy.types.JSON, } # By convention, dialect-provided types are spelled with all upper case. @@ -66,6 +67,7 @@ STRING = _type_map["STRING"] TIMESTAMP = _type_map["TIMESTAMP"] TIME = _type_map["TIME"] +JSON = _type_map["JSON"] try: _type_map["GEOGRAPHY"] = GEOGRAPHY diff --git a/sqlalchemy_bigquery/base.py b/sqlalchemy_bigquery/base.py index c531c102..e4d39886 100644 --- a/sqlalchemy_bigquery/base.py +++ b/sqlalchemy_bigquery/base.py @@ -641,6 +641,9 @@ def visit_NUMERIC(self, type_, **kw): visit_DECIMAL = visit_NUMERIC + def visit_JSON(self, type_, **kw): + return "JSON" + class BigQueryDDLCompiler(DDLCompiler): option_datatype_mapping = { From 75200959334052790263fea44565a1a084d23164 Mon Sep 17 00:00:00 2001 From: Sandeep Akode Date: Sat, 16 Nov 2024 18:17:44 +0530 Subject: [PATCH 2/2] added type JSON to init --- sqlalchemy_bigquery/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sqlalchemy_bigquery/__init__.py b/sqlalchemy_bigquery/__init__.py index 1e506125..5e05cbdb 100644 --- a/sqlalchemy_bigquery/__init__.py +++ b/sqlalchemy_bigquery/__init__.py @@ -43,6 +43,7 @@ STRUCT, TIME, TIMESTAMP, + JSON, ) from . import _versions_helpers @@ -80,6 +81,7 @@ "STRUCT", "TIME", "TIMESTAMP", + "JSON", ] try: