Skip to content

Commit 5c98233

Browse files
committed
Bug fix for json support
1 parent 193e38c commit 5c98233

2 files changed

Lines changed: 10 additions & 5 deletions

File tree

pydynamodb/sqlalchemy_dynamodb/pydynamodb.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def process(value):
4848
if value is None:
4949
return None
5050

51-
if isinstance(value, dict):
51+
if isinstance(value, dict) or isinstance(value, list):
5252
return value
5353

5454
if isinstance(value, str) and _SQLALCHEMY_MAJOR_VERSION < 2:

tests/test_sqlalchemy_dynamodb.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class _TestCase02(Base):
2020
col_num = Column(Numeric)
2121
col_nested = Column()
2222
col_json = Column(JSON)
23+
col_json_array = Column(JSON)
2324

2425
class _User(Base):
2526
__tablename__ = USER_TABLE
@@ -154,6 +155,7 @@ def test_declarative_table_insert(self, engine):
154155
test_case02.col_str = "test case declarative table " + str(i)
155156
test_case02.col_num = i
156157
test_case02.col_json = {"key": "value"}
158+
test_case02.col_json_array = [{"key1": "value1"}, {"key2": "value2"}]
157159
session.add(test_case02)
158160
session.commit()
159161

@@ -181,12 +183,13 @@ def test_declarative_table_update(self, engine):
181183
test_case.col_str = "test case declarative table 99"
182184
test_case.col_num = 99
183185
test_case.col_json = {"key": "value updated"}
186+
test_case.col_json_array = [{"key1": "value1 updated"}, {"key2": "value2 updated"}]
184187
session.commit()
185188

186189
rows = conn.execute(
187190
text(
188191
"""
189-
SELECT * FROM %s
192+
SELECT col_str, col_num, col_json, col_json_array FROM %s
190193
WHERE key_partition = :pk
191194
AND key_sort = :sk
192195
"""
@@ -195,9 +198,10 @@ def test_declarative_table_update(self, engine):
195198
{"pk": "test_one_row_3", "sk": 1},
196199
).fetchall()
197200
assert len(rows) == 1
198-
assert rows[0][2] == "test case declarative table 99"
199-
assert rows[0][3] == 99
200-
assert rows[0][5] == '{"key": "value updated"}'
201+
assert rows[0][0] == "test case declarative table 99"
202+
assert rows[0][1] == 99
203+
assert rows[0][2] == '{"key": "value updated"}'
204+
assert rows[0][3] == '[{"key1": "value1 updated"}, {"key2": "value2 updated"}]'
201205

202206
def test_declarative_table_select(self, engine):
203207
engine, _ = engine
@@ -215,6 +219,7 @@ def test_declarative_table_select(self, engine):
215219
assert test_case.col_num == 4
216220
assert test_case.col_nested is None
217221
assert test_case.col_json == {"key": "value"}
222+
assert test_case.col_json_array == [{"key1": "value1"}, {"key2": "value2"}]
218223

219224
def test_declarative_table_delete(self, engine):
220225
engine, _ = engine

0 commit comments

Comments
 (0)