@@ -212,9 +212,9 @@ def test_upsert_on_duplicate(self):
212
212
old_sql = SQLizer .upsert_on_duplicate (
213
213
self .table ,
214
214
[
215
- {'id' : 7 , ' gender' : 1 , ' name' : ' 斉藤 修平' , ' locale' : ' ja_JP' , ' extend' : {}},
216
- {'id' : 8 , ' gender' : 1 , ' name' : ' Ojas Salvi' , ' locale' : ' en_IN' , ' extend' : {}},
217
- {'id' : 9 , ' gender' : 1 , ' name' : ' 羊淑兰' , ' locale' : ' zh_CN' , ' extend' : {}}
215
+ {"id" : 7 , " gender" : 1 , " name" : " 斉藤 修平" , " locale" : " ja_JP" , " extend" : {}},
216
+ {"id" : 8 , " gender" : 1 , " name" : " Ojas Salvi" , " locale" : " en_IN" , " extend" : {}},
217
+ {"id" : 9 , " gender" : 1 , " name" : " 羊淑兰" , " locale" : " zh_CN" , " extend" : {}}
218
218
],
219
219
insert_fields = ["id" , "gender" , "name" , "locale" , "extend" ],
220
220
upsert_fields = ["name" , "locale" ],
@@ -233,9 +233,9 @@ def test_upsert_on_duplicate(self):
233
233
new_sql = SQLizer .upsert_on_duplicate (
234
234
self .table ,
235
235
[
236
- {'id' : 7 , ' gender' : 1 , ' name' : ' 斉藤 修平' , ' locale' : ' ja_JP' , ' extend' : {}},
237
- {'id' : 8 , ' gender' : 1 , ' name' : ' Ojas Salvi' , ' locale' : ' en_IN' , ' extend' : {}},
238
- {'id' : 9 , ' gender' : 1 , ' name' : ' 羊淑兰' , ' locale' : ' zh_CN' , ' extend' : {}}
236
+ {"id" : 7 , " gender" : 1 , " name" : " 斉藤 修平" , " locale" : " ja_JP" , " extend" : {}},
237
+ {"id" : 8 , " gender" : 1 , " name" : " Ojas Salvi" , " locale" : " en_IN" , " extend" : {}},
238
+ {"id" : 9 , " gender" : 1 , " name" : " 羊淑兰" , " locale" : " zh_CN" , " extend" : {}}
239
239
],
240
240
insert_fields = ["id" , "gender" , "name" , "locale" , "extend" ],
241
241
upsert_fields = ["name" , "locale" ],
@@ -254,9 +254,9 @@ def test_upsert_on_duplicate(self):
254
254
only_insert_sql = SQLizer .upsert_on_duplicate (
255
255
self .table ,
256
256
[
257
- {'id' : 7 , ' gender' : 1 , ' name' : ' 斉藤 修平' , ' locale' : ' ja_JP' , ' extend' : {}},
258
- {'id' : 8 , ' gender' : 1 , ' name' : ' Ojas Salvi' , ' locale' : ' en_IN' , ' extend' : {}},
259
- {'id' : 9 , ' gender' : 1 , ' name' : ' 羊淑兰' , ' locale' : ' zh_CN' , ' extend' : {}}
257
+ {"id" : 7 , " gender" : 1 , " name" : " 斉藤 修平" , " locale" : " ja_JP" , " extend" : {}},
258
+ {"id" : 8 , " gender" : 1 , " name" : " Ojas Salvi" , " locale" : " en_IN" , " extend" : {}},
259
+ {"id" : 9 , " gender" : 1 , " name" : " 羊淑兰" , " locale" : " zh_CN" , " extend" : {}}
260
260
],
261
261
insert_fields = ["id" , "gender" , "name" , "locale" , "extend" ],
262
262
)
@@ -328,8 +328,8 @@ def test_build_fly_table(self):
328
328
329
329
old_sql = SQLizer .build_fly_table (
330
330
[
331
- {'id' : 7 , ' active' : False , ' gender' : GenderEnum .male },
332
- {'id' : 15 , ' active' : True , ' gender' : GenderEnum .unknown }
331
+ {"id" : 7 , " active" : False , " gender" : GenderEnum .male },
332
+ {"id" : 15 , " active" : True , " gender" : GenderEnum .unknown }
333
333
],
334
334
fields = ["id" , "active" , "gender" ],
335
335
using_values = False ,
@@ -343,8 +343,8 @@ def test_build_fly_table(self):
343
343
344
344
new_sql = SQLizer .build_fly_table (
345
345
[
346
- {'id' : 7 , ' active' : False , ' gender' : GenderEnum .male },
347
- {'id' : 15 , ' active' : True , ' gender' : GenderEnum .unknown }
346
+ {"id" : 7 , " active" : False , " gender" : GenderEnum .male },
347
+ {"id" : 15 , " active" : True , " gender" : GenderEnum .unknown }
348
348
],
349
349
fields = ["id" , "active" , "gender" ],
350
350
using_values = True ,
@@ -368,22 +368,23 @@ def test_bulk_update_from_dicts(self):
368
368
sql = SQLizer .bulk_update_from_dicts (
369
369
self .table ,
370
370
[
371
- {'id' : 7 , ' active' : False , ' gender' : GenderEnum .male },
372
- {'id' : 15 , ' active' : True , ' gender' : GenderEnum .unknown }
371
+ {"id" : 7 , " active" : False , " gender" : GenderEnum .male , "extend" : { "test" : 1 , "debug" : 0 } },
372
+ {"id" : 15 , " active" : True , " gender" : GenderEnum .unknown , "extend" : { "test" : 1 , "debug" : 0 } }
373
373
],
374
374
join_fields = ["id" ],
375
375
update_fields = ["active" , "gender" ],
376
+ merge_fields = ["extend" ],
376
377
)
377
378
assert sql == """
378
379
UPDATE account
379
380
JOIN (
380
381
SELECT * FROM (
381
382
VALUES
382
- ROW(7, False, 1),
383
- ROW(15, True, 0)
384
- ) AS fly_table (id, active, gender)
383
+ ROW(7, False, 1, '{"test": 1, "debug": 0}' ),
384
+ ROW(15, True, 0, '{"test": 1, "debug": 0}' )
385
+ ) AS fly_table (id, active, gender, extend )
385
386
) tmp ON account.id=tmp.id
386
- SET account.active=tmp.active, account.gender=tmp.gender
387
+ SET account.active=tmp.active, account.gender=tmp.gender, account.extend=JSON_MERGE_PATCH(COALESCE(account.extend, '{}'), tmp.extend)
387
388
"""
388
389
389
390
# def test_(self):
0 commit comments