]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- add a section for ARRAY of JSON to complement ARRAY of ENUM. references #3467
authorMike Bayer <mike_mp@zzzcomputing.com>
Thu, 5 Jan 2017 15:02:58 +0000 (10:02 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 5 Jan 2017 15:03:55 +0000 (10:03 -0500)
Change-Id: I9836b842be01ef24138071fa022d80f5f77be14f

lib/sqlalchemy/dialects/postgresql/base.py

index c5021249e71e5422b4f850da4fbc0418a7e647f3..339536dd4a0b60b4a2d07a60f367097947e7d9ad 100644 (file)
@@ -814,6 +814,29 @@ This type is not included as a built-in type as it would be incompatible
 with a DBAPI that suddenly decides to support ARRAY of ENUM directly in
 a new version.
 
+.. _postgresql_array_of_json:
+
+Using JSON/JSONB with ARRAY
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Similar to using ENUM, for an ARRAY of JSON/JSONB we need to render the
+appropriate CAST, however current psycopg2 drivers seem to handle the result
+for ARRAY of JSON automatically, so the type is simpler::
+
+
+    class CastingArray(ARRAY):
+        def bind_expression(self, bindvalue):
+            return sa.cast(bindvalue, self)
+
+E.g.::
+
+    Table(
+        'mydata', metadata,
+        Column('id', Integer, primary_key=True),
+        Column('data', CastingArray(JSONB))
+    )
+
+
 """
 from collections import defaultdict
 import re