@@ -168,15 +168,15 @@ def test_1_named_dollar_to_pyformat_many(self):
168168 self .assertEqual (sql , dest_sql )
169169 self .assertEqual (many_params , dest_params )
170170
171- def test_1_named_oracle_1_to_pyformat_mixed (self ):
171+ def test_1_named_oracle_1_to_pyformat_1_no_quotes (self ):
172172 """
173173 Test converting from::
174174
175- ... WHERE name = :" name"
175+ ... WHERE name = :name
176176
177177 to::
178178
179- ... WHERE name = %(name )s
179+ ... WHERE name = %(NAME )s
180180 """
181181 # Create instance.
182182 query = sqlparams .SQLParams ('named_oracle' , 'pyformat' )
@@ -185,20 +185,17 @@ def test_1_named_oracle_1_to_pyformat_mixed(self):
185185 src_sql = """
186186 SELECT *
187187 FROM users
188- WHERE id = :"ID" OR name = :Name AND race = :race;
188+ WHERE id = :ID OR name = :Name AND race = :race;
189189 """
190- src_params = {'id' : 4 , '" NAME" ' : "Fili" , '"RACE" ' : "Dwarf " }
190+ src_params = {'id' : 4 , 'NAME' : "Fili" , 'Race ' : "dwarf " }
191191
192192 # Desired SQL and params.
193193 dest_sql = """
194194 SELECT *
195195 FROM users
196196 WHERE id = %(ID)s OR name = %(NAME)s AND race = %(RACE)s;
197197 """
198- dest_params = {
199- (__key .strip ('"' ) if '"' in __key else __key .upper ()): __val
200- for __key , __val in src_params .items ()
201- }
198+ dest_params = {__key .upper (): __val for __key , __val in src_params .items ()}
202199
203200 # Format SQL with params.
204201 sql , params = query .format (src_sql , src_params )
@@ -207,15 +204,15 @@ def test_1_named_oracle_1_to_pyformat_mixed(self):
207204 self .assertEqual (sql , dest_sql )
208205 self .assertEqual (params , dest_params )
209206
210- def test_1_named_oracle_1_to_pyformat_no_quotes (self ):
207+ def test_1_named_oracle_1_to_pyformat_2_quotes (self ):
211208 """
212209 Test converting from::
213210
214- ... WHERE name = :name
211+ ... WHERE name = :" name"
215212
216213 to::
217214
218- ... WHERE name = %(NAME )s
215+ ... WHERE name = %(name )s
219216 """
220217 # Create instance.
221218 query = sqlparams .SQLParams ('named_oracle' , 'pyformat' )
@@ -224,17 +221,19 @@ def test_1_named_oracle_1_to_pyformat_no_quotes(self):
224221 src_sql = """
225222 SELECT *
226223 FROM users
227- WHERE id = :ID OR name = :Name AND race = :race;
224+ WHERE id = :"ID" OR name = :" Name" AND race = :" race" ;
228225 """
229- src_params = {'id ' : 4 , 'name ' : "Fili" , 'race' : "dwarf" }
226+ src_params = {'"ID" ' : 4 , '"Name" ' : "Fili" , '" race" ' : "dwarf" }
230227
231228 # Desired SQL and params.
232229 dest_sql = """
233230 SELECT *
234231 FROM users
235- WHERE id = %(ID)s OR name = %(NAME )s AND race = %(RACE )s;
232+ WHERE id = %(ID)s OR name = %(Name )s AND race = %(race )s;
236233 """
237- dest_params = {__key .upper (): __val for __key , __val in src_params .items ()}
234+ dest_params = {
235+ __key .strip ('"' ): __val for __key , __val in src_params .items ()
236+ }
238237
239238 # Format SQL with params.
240239 sql , params = query .format (src_sql , src_params )
@@ -243,7 +242,7 @@ def test_1_named_oracle_1_to_pyformat_no_quotes(self):
243242 self .assertEqual (sql , dest_sql )
244243 self .assertEqual (params , dest_params )
245244
246- def test_1_named_oracle_1_to_pyformat_quotes (self ):
245+ def test_1_named_oracle_1_to_pyformat_3_mixed (self ):
247246 """
248247 Test converting from::
249248
@@ -260,18 +259,19 @@ def test_1_named_oracle_1_to_pyformat_quotes(self):
260259 src_sql = """
261260 SELECT *
262261 FROM users
263- WHERE id = :"ID" OR name = :"Name" AND race = :" race" ;
262+ WHERE id = :"ID" OR name = :"Name" AND race = :race;
264263 """
265- src_params = {'"ID" ' : 4 , '"Name"' : "Fili" , '"race "' : "dwarf " }
264+ src_params = {'id ' : 4 , '"Name"' : "Fili" , '"RACE "' : "Dwarf " }
266265
267266 # Desired SQL and params.
268267 dest_sql = """
269268 SELECT *
270269 FROM users
271- WHERE id = %(ID)s OR name = %(Name)s AND race = %(race )s;
270+ WHERE id = %(ID)s OR name = %(Name)s AND race = %(RACE )s;
272271 """
273272 dest_params = {
274- __key .strip ('"' ): __val for __key , __val in src_params .items ()
273+ (__key .strip ('"' ) if '"' in __key else __key .upper ()): __val
274+ for __key , __val in src_params .items ()
275275 }
276276
277277 # Format SQL with params.
@@ -281,11 +281,11 @@ def test_1_named_oracle_1_to_pyformat_quotes(self):
281281 self .assertEqual (sql , dest_sql )
282282 self .assertEqual (params , dest_params )
283283
284- def test_1_named_oracle_2_to_pyformat_many_mixed (self ):
284+ def test_1_named_oracle_2_to_pyformat_1_many_no_quotes (self ):
285285 """
286286 Test converting many from::
287287
288- ... WHERE name = :" name"
288+ ... WHERE name = :name
289289
290290 to::
291291
@@ -295,15 +295,17 @@ def test_1_named_oracle_2_to_pyformat_many_mixed(self):
295295 query = sqlparams .SQLParams ('named_oracle' , 'pyformat' )
296296
297297 # Source SQL and params.
298+ # - WARNING: Only the first row is scanned for the in-parameter names. All
299+ # subsequent rows must have the exact same in-parameter names.
298300 src_sql = """
299301 SELECT *
300302 FROM users
301- WHERE id = :"ID" OR name = :Name AND race = :race;
303+ WHERE id = :ID OR name = :Name AND race = :race;
302304 """
303305 src_params = [
304- {'id' : 6 , '" NAME" ' : "Nori" , '"RACE" ' : "dwarf" },
305- {'id' : 2 , '" NAME" ' : "Balin" , '"RACE" ' : "dwarf" },
306- {'id' : 10 , '" NAME" ' : "Bifur" , '"RACE" ' : "dwarf" },
306+ {'id' : 6 , 'NAME' : "Nori" , 'Race ' : "dwarf" },
307+ {'id' : 2 , 'NAME' : "Balin" , 'Race ' : "dwarf" },
308+ {'id' : 10 , 'NAME' : "Bifur" , 'Race ' : "dwarf" },
307309 ]
308310
309311 # Desired SQL and params.
@@ -312,10 +314,10 @@ def test_1_named_oracle_2_to_pyformat_many_mixed(self):
312314 FROM users
313315 WHERE id = %(ID)s OR name = %(NAME)s AND race = %(RACE)s;
314316 """
315- dest_params = [{
316- ( __key .strip ( '"' ) if '"' in __key else __key . upper ()): __val
317- for __key , __val in __row . items ()
318- } for __row in src_params ]
317+ dest_params = [
318+ { __key .upper (): __val for __key , __val in __row . items ()}
319+ for __row in src_params
320+ ]
319321
320322 # Format SQL with params.
321323 sql , many_params = query .formatmany (src_sql , src_params )
@@ -324,11 +326,11 @@ def test_1_named_oracle_2_to_pyformat_many_mixed(self):
324326 self .assertEqual (sql , dest_sql )
325327 self .assertEqual (many_params , dest_params )
326328
327- def test_1_named_oracle_2_to_pyformat_many_no_quotes (self ):
329+ def test_1_named_oracle_2_to_pyformat_2_many_quotes (self ):
328330 """
329331 Test converting many from::
330332
331- ... WHERE name = :name
333+ ... WHERE name = :" name"
332334
333335 to::
334336
@@ -338,25 +340,27 @@ def test_1_named_oracle_2_to_pyformat_many_no_quotes(self):
338340 query = sqlparams .SQLParams ('named_oracle' , 'pyformat' )
339341
340342 # Source SQL and params.
343+ # - WARNING: Only the first row is scanned for the in-parameter names. All
344+ # subsequent rows must have the exact same in-parameter names.
341345 src_sql = """
342346 SELECT *
343347 FROM users
344- WHERE id = :ID OR name = :Name AND race = :race;
348+ WHERE id = :"ID" OR name = :" Name" AND race = :" race" ;
345349 """
346350 src_params = [
347- {'id ' : 6 , 'name ' : "Nori" , 'race' : "dwarf" },
348- {'id ' : 2 , 'name ' : "Balin" , 'race' : "dwarf" },
349- {'id ' : 10 , 'name ' : "Bifur" , 'race' : "dwarf" },
351+ {'"ID" ' : 6 , '"Name" ' : "Nori" , '" race" ' : "dwarf" },
352+ {'"ID" ' : 2 , '"Name" ' : "Balin" , '" race" ' : "dwarf" },
353+ {'"ID" ' : 10 , '"Name" ' : "Bifur" , '" race" ' : "dwarf" },
350354 ]
351355
352356 # Desired SQL and params.
353357 dest_sql = """
354358 SELECT *
355359 FROM users
356- WHERE id = %(ID)s OR name = %(NAME )s AND race = %(RACE )s;
360+ WHERE id = %(ID)s OR name = %(Name )s AND race = %(race )s;
357361 """
358362 dest_params = [
359- {__key .upper ( ): __val for __key , __val in __row .items ()}
363+ {__key .strip ( '"' ): __val for __key , __val in __row .items ()}
360364 for __row in src_params
361365 ]
362366
@@ -367,7 +371,7 @@ def test_1_named_oracle_2_to_pyformat_many_no_quotes(self):
367371 self .assertEqual (sql , dest_sql )
368372 self .assertEqual (many_params , dest_params )
369373
370- def test_1_named_oracle_2_to_pyformat_many_quotes (self ):
374+ def test_1_named_oracle_2_to_pyformat_3_many_mixed (self ):
371375 """
372376 Test converting many from::
373377
@@ -381,27 +385,29 @@ def test_1_named_oracle_2_to_pyformat_many_quotes(self):
381385 query = sqlparams .SQLParams ('named_oracle' , 'pyformat' )
382386
383387 # Source SQL and params.
388+ # - WARNING: Only the first row is scanned for the in-parameter names. All
389+ # subsequent rows must have the exact same in-parameter names.
384390 src_sql = """
385391 SELECT *
386392 FROM users
387- WHERE id = :"ID" OR name = :"Name" AND race = :" race" ;
393+ WHERE id = :"ID" OR name = :"Name" AND race = :race;
388394 """
389395 src_params = [
390- {'"ID" ' : 6 , '"Name"' : "Nori" , '"race "' : "dwarf" },
391- {'"ID" ' : 2 , '"Name"' : "Balin" , '"race "' : "dwarf" },
392- {'"ID" ' : 10 , '"Name"' : "Bifur" , '"race "' : "dwarf" },
396+ {'id ' : 6 , '"Name"' : "Nori" , '"RACE "' : "dwarf" },
397+ {'id ' : 2 , '"Name"' : "Balin" , '"RACE "' : "dwarf" },
398+ {'id ' : 10 , '"Name"' : "Bifur" , '"RACE "' : "dwarf" },
393399 ]
394400
395401 # Desired SQL and params.
396402 dest_sql = """
397403 SELECT *
398404 FROM users
399- WHERE id = %(ID)s OR name = %(Name)s AND race = %(race )s;
405+ WHERE id = %(ID)s OR name = %(Name)s AND race = %(RACE )s;
400406 """
401- dest_params = [
402- { __key .strip ('"' ): __val for __key , __val in __row . items ()}
403- for __row in src_params
404- ]
407+ dest_params = [{
408+ ( __key .strip ('"' ) if '"' in __key else __key . upper ()): __val
409+ for __key , __val in __row . items ()
410+ } for __row in src_params ]
405411
406412 # Format SQL with params.
407413 sql , many_params = query .formatmany (src_sql , src_params )
0 commit comments