@@ -68,26 +68,53 @@ def test_resolve_orders(self):
6868 orders = SQLizer .resolve_orders (["-created_at" , "name" ])
6969 assert orders == "created_at DESC, name ASC"
7070
71- def test_sqlize_value (self ):
72- assert SQLizer .sqlize_value (None ) == "NULL"
71+ def test_sqlize_value_v1 (self ):
72+ assert SQLizer .sqlize_value (None , ver = 1 ) == "NULL"
7373
7474 raw_sql = RawSQL ("statement" )
75- assert SQLizer .sqlize_value (raw_sql ) == raw_sql .sql
75+ assert SQLizer .sqlize_value (raw_sql , ver = 1 ) == raw_sql .sql
7676 cases = Cases ("is_ok" , {0 : "No" , 1 : "Yes" })
77- assert SQLizer .sqlize_value (cases ) == cases .sql
77+ assert SQLizer .sqlize_value (cases , ver = 1 ) == cases .sql
7878
79- assert SQLizer .sqlize_value (1024 ) == "1024"
80- assert SQLizer .sqlize_value (0.125 ) == "0.125"
81- assert SQLizer .sqlize_value (True ) == "True"
79+ assert SQLizer .sqlize_value (GenderEnum .unknown , ver = 1 ) == "0"
80+ assert SQLizer .sqlize_value (LocaleEnum .zh_CN , ver = 1 ) == "'zh_CN'"
81+
82+ assert SQLizer .sqlize_value (1024 , ver = 1 ) == "1024"
83+ assert SQLizer .sqlize_value (0.125 , ver = 1 ) == "0.125"
84+ assert SQLizer .sqlize_value (True , ver = 1 ) == "True"
85+
86+ assert (
87+ SQLizer .sqlize_value ({"gender" : 0 , "name" : "羊淑兰" }, to_json = True , ver = 1 )
88+ == """CAST('{"gender": 0, "name": "羊淑兰"}' AS JSON)"""
89+ )
90+ assert SQLizer .sqlize_value ([1 , 2 , 4 ], ver = 1 ) == "'[1, 2, 4]'"
91+ assert SQLizer .sqlize_value (("a" , "b" , "c" ), ver = 1 ) == """'["a", "b", "c"]'"""
92+
93+ assert SQLizer .sqlize_value (datetime (2023 , 1 , 1 , 12 , 30 ), ver = 1 ) == "'2023-01-01 12:30:00'"
94+
95+ def test_escape_v2 (self ):
96+ assert SQLizer .escape (None , ver = 2 ) == "NULL"
97+
98+ raw_sql = RawSQL ("statement" )
99+ assert SQLizer .escape (raw_sql , ver = 2 ) == raw_sql .sql
100+ cases = Cases ("is_ok" , {0 : "No" , 1 : "Yes" })
101+ assert SQLizer .escape (cases , ver = 2 ) == cases .sql
102+
103+ assert SQLizer .escape (GenderEnum .unknown , ver = 2 ) == "0"
104+ assert SQLizer .escape (LocaleEnum .zh_CN , ver = 2 ) == "'zh_CN'"
105+
106+ assert SQLizer .escape (1024 , ver = 2 ) == "1024"
107+ assert SQLizer .escape (0.125 , ver = 2 ) == "0.125"
108+ assert SQLizer .escape (True , ver = 2 ) == "1"
82109
83110 assert (
84- SQLizer .sqlize_value ({"gender" : 0 , "name" : "羊淑兰" }, to_json = True )
111+ SQLizer .escape ({"gender" : 0 , "name" : "羊淑兰" }, to_json = True , ver = 2 )
85112 == """CAST('{"gender": 0, "name": "羊淑兰"}' AS JSON)"""
86113 )
87- assert SQLizer .sqlize_value ([1 , 2 , 4 ]) == "'[1, 2, 4]'"
88- assert SQLizer .sqlize_value (("a" , "b" , "c" )) == """'["a", "b", "c"]'"""
114+ assert SQLizer .escape ([1 , 2 , 4 ], ver = 2 ) == "'[1, 2, 4]'"
115+ assert SQLizer .escape (("a" , "b" , "c" ), ver = 2 ) == """'["a", "b", "c"]'"""
89116
90- assert SQLizer .sqlize_value (datetime (2023 , 1 , 1 , 12 , 30 )) == "'2023-01-01 12 :30:00'"
117+ assert SQLizer .escape (datetime (2023 , 1 , 1 , 12 , 30 ), ver = 2 ) == "'2023-01-01T12 :30:00'"
91118
92119 def test_select_custom_fields (self ):
93120 with self .assertRaises (WrongParamsError ):
@@ -227,7 +254,7 @@ def test_update_json_field(self):
227254 assert sql == """
228255 UPDATE `account` SET extend =
229256 JSON_MERGE_PATCH(JSON_SET(JSON_REMOVE(COALESCE(extend, '{}'), '$.deprecated'), '$.last_login',CAST('{"ipv4": "209.182.101.161"}' AS JSON), '$.uuid','fd04f7f2-24fc-4a73-a1d7-b6e99a464c5f'), '{"updated_at": "2022-10-30 21:34:15", "info": {"online_sec": 636}}')
230- , active=True , name='new_name'
257+ , active=1 , name='new_name'
231258 WHERE `id`=8
232259"""
233260
@@ -326,7 +353,7 @@ def test_insert_into_select(self):
326353 assert archive_sql == """
327354 INSERT INTO `account_bak`
328355 (gender, locale, active, name, extend)
329- SELECT gender, CASE id WHEN 3 THEN 'zh_CN' WHEN 4 THEN 'en_US' WHEN 5 THEN 'fr_FR' ELSE '' END locale, False active, CONCAT(LEFT(name, 26), ' [NEW]') name, '{}' extend
356+ SELECT gender, CASE id WHEN 3 THEN 'zh_CN' WHEN 4 THEN 'en_US' WHEN 5 THEN 'fr_FR' ELSE '' END locale, 0 active, CONCAT(LEFT(name, 26), ' [NEW]') name, '{}' extend
330357 FROM `account`
331358 WHERE `id` IN (4,5,6)
332359"""
@@ -346,7 +373,7 @@ def test_insert_into_select(self):
346373 assert copy_sql == """
347374 INSERT INTO `account`
348375 (gender, locale, active, name, extend)
349- SELECT gender, CASE id WHEN 3 THEN 'zh_CN' WHEN 4 THEN 'en_US' WHEN 5 THEN 'fr_FR' ELSE '' END locale, False active, CONCAT(LEFT(name, 26), ' [NEW]') name, '{}' extend
376+ SELECT gender, CASE id WHEN 3 THEN 'zh_CN' WHEN 4 THEN 'en_US' WHEN 5 THEN 'fr_FR' ELSE '' END locale, 0 active, CONCAT(LEFT(name, 26), ' [NEW]') name, '{}' extend
350377 FROM `account`
351378 WHERE `id` IN (4,5,6)
352379"""
@@ -368,9 +395,9 @@ def test_build_fly_table(self):
368395 )
369396 assert old_sql == """
370397 SELECT * FROM (
371- SELECT 7 id, False active, 1 gender
398+ SELECT 7 id, 0 active, 1 gender
372399 UNION
373- SELECT 15 id, True active, 0 gender
400+ SELECT 15 id, 1 active, 0 gender
374401 ) AS fly_table"""
375402
376403 new_sql = SQLizer .build_fly_table (
@@ -384,8 +411,8 @@ def test_build_fly_table(self):
384411 assert new_sql == """
385412 SELECT * FROM (
386413 VALUES
387- ROW(7, False , 1),
388- ROW(15, True , 0)
414+ ROW(7, 0 , 1),
415+ ROW(15, 1 , 0)
389416 ) AS fly_table (id, active, gender)"""
390417
391418 def test_bulk_update_from_dicts (self ):
@@ -412,8 +439,8 @@ def test_bulk_update_from_dicts(self):
412439 JOIN (
413440 SELECT * FROM (
414441 VALUES
415- ROW(7, False, False , 1, '{"test": 1, "debug": 0}'),
416- ROW(15, False, True , 0, '{"test": 1, "debug": 0}')
442+ ROW(7, 0, 0 , 1, '{"test": 1, "debug": 0}'),
443+ ROW(15, 0, 1 , 0, '{"test": 1, "debug": 0}')
417444 ) AS fly_table (id, deleted, active, gender, extend)
418445 ) tmp ON `account`.id=tmp.id AND `account`.deleted=tmp.deleted
419446 SET `account`.active=tmp.active, `account`.gender=tmp.gender, `account`.extend=JSON_MERGE_PATCH(COALESCE(`account`.extend, '{}'), tmp.extend)
0 commit comments