00001
00002
00003
00004
00005 """Test for dbtext_query."""
00006
00007 __author__ = 'herman@google.com (Herman Sheremetyev)'
00008
00009 import time
00010 import unittest
00011 from dbtextdb import *
00012
00013
00014 class DBTextTest(unittest.TestCase):
00015
00016 def setUp(self):
00017 self.time_now = '%s' % int(time.time())
00018 self.time_now = self.time_now[0:-2] + '00'
00019
00020 def testParseQuery(self):
00021 db_conn = DBText('./tests')
00022
00023 query_bad_command = 'selecta * from table;'
00024 self.assertRaises(ParseError, db_conn.ParseQuery, query_bad_command)
00025
00026 query_normal = 'select * from subscriber;'
00027 db_conn.ParseQuery(query_normal)
00028 self.assert_(db_conn.command == 'SELECT')
00029 self.assert_(db_conn.table == 'subscriber')
00030 self.assert_(db_conn.columns == ['*'])
00031 db_conn.CleanUp()
00032
00033 query_normal_cond = 'select * from subscriber where column="value";'
00034 db_conn.ParseQuery(query_normal_cond)
00035 self.assert_(db_conn.command == 'SELECT')
00036 self.assert_(db_conn.table == 'subscriber')
00037 self.assert_(db_conn.columns == ['*'])
00038 self.assert_(db_conn.strings == ['value'])
00039 self.assert_(not db_conn.count)
00040 self.assert_(db_conn.conditions == {'column': 'value'})
00041 db_conn.CleanUp()
00042
00043 query_normal_cond = ('select * from subscriber where column="value1" and '
00044 'col2=" another value " and col3= foo and a="";')
00045 db_conn.ParseQuery(query_normal_cond)
00046 self.assert_(db_conn.command == 'SELECT')
00047 self.assert_(db_conn.table == 'subscriber')
00048 self.assert_(db_conn.columns == ['*'])
00049 self.assert_(db_conn.strings == ['value1', ' another value ', ''])
00050 self.assertEqual(db_conn.conditions, {'column': 'value1',
00051 'col2': ' another value ',
00052 'col3': 'foo', 'a': ''})
00053 db_conn.CleanUp()
00054
00055 query_normal_count = 'select count(*) from subscriber;'
00056 db_conn.ParseQuery(query_normal_count)
00057 self.assert_(db_conn.command == 'SELECT')
00058 self.assert_(db_conn.table == 'subscriber')
00059 self.assert_(db_conn.columns == ['*'])
00060 self.assert_(db_conn.count == True)
00061 db_conn.CleanUp()
00062
00063 query_normal_count = 'select count(*) from subscriber where time=now();'
00064 db_conn.ParseQuery(query_normal_count)
00065 self.assert_(db_conn.command == 'SELECT')
00066 self.assert_(db_conn.table == 'subscriber')
00067 self.assert_(db_conn.columns == ['*'])
00068 self.assert_(db_conn.count == True)
00069 self.assertEqual(db_conn.conditions, {'time': self.time_now})
00070 db_conn.CleanUp()
00071
00072 query_normal_delete = 'delete from subscriber where foo = 2;'
00073 db_conn.ParseQuery(query_normal_delete)
00074 self.assert_(db_conn.command == 'DELETE')
00075 self.assert_(db_conn.table == 'subscriber')
00076 self.assertEqual(db_conn.conditions, {'foo': '2'})
00077 db_conn.CleanUp()
00078
00079 query_normal_insert_values = ('insert subscriber (col1, col2, col3) '
00080 'values (1, "foo", "");')
00081 db_conn.ParseQuery(query_normal_insert_values)
00082 self.assert_(db_conn.command == 'INSERT')
00083 self.assert_(db_conn.table == 'subscriber')
00084 self.assertEqual(db_conn.targets, {'col1': '1', 'col2': 'foo', 'col3': ''})
00085 db_conn.CleanUp()
00086
00087 query_normal_insert_into_values = ('insert into subscriber (col1, col2) '
00088 'values (1, "foo");')
00089 db_conn.ParseQuery(query_normal_insert_into_values)
00090 self.assert_(db_conn.command == 'INSERT')
00091 self.assert_(db_conn.table == 'subscriber')
00092 self.assertEqual(db_conn.targets, {'col1': '1', 'col2': 'foo'})
00093 db_conn.CleanUp()
00094
00095 query_normal_insert_into_values = ('insert into subscriber (a, b, c) '
00096 'values (NOW(), "foo", now());')
00097 db_conn.ParseQuery(query_normal_insert_into_values)
00098 self.assert_(db_conn.command == 'INSERT')
00099 self.assert_(db_conn.table == 'subscriber')
00100 self.assertEqual(db_conn.targets, {'a': self.time_now, 'b': 'foo',
00101 'c': self.time_now})
00102 db_conn.CleanUp()
00103
00104 bad_insert_query_missing_table = ('insert into (col1, col2) '
00105 'values (1, "foo");')
00106 self.assertRaises(ParseError, db_conn.ParseQuery,
00107 bad_insert_query_missing_table)
00108 db_conn.CleanUp()
00109
00110 bad_insert_query_missing_parens = ('insert into test col1, col2 '
00111 'values (1, "foo");')
00112 self.assertRaises(ParseError, db_conn.ParseQuery,
00113 bad_insert_query_missing_parens)
00114 db_conn.CleanUp()
00115
00116 bad_insert_query_missing_paren = ('insert into test (col1, col2) '
00117 'values 1, "foo");')
00118 self.assertRaises(ParseError, db_conn.ParseQuery,
00119 bad_insert_query_missing_paren)
00120 db_conn.CleanUp()
00121
00122 bad_insert_query_missing_quote = ('insert into test (col1, col2) '
00123 '(values 1, "foo);')
00124 self.assertRaises(ParseError, db_conn.ParseQuery,
00125 bad_insert_query_missing_quote)
00126 db_conn.CleanUp()
00127
00128 bad_insert_query_missing_values = ('insert into test (col1, col2) '
00129 '( 1, "foo");')
00130 self.assertRaises(ParseError, db_conn.ParseQuery,
00131 bad_insert_query_missing_values)
00132 db_conn.CleanUp()
00133
00134 bad_insert_query_misplaced_values = ('insert into test values (col1, col2) '
00135 '( 1, "foo");')
00136 self.assertRaises(ParseError, db_conn.ParseQuery,
00137 bad_insert_query_misplaced_values)
00138 db_conn.CleanUp()
00139
00140 bad_insert_query_extra_values = ('insert into test values (col1, col2) '
00141 ' values values ( 1, "foo");')
00142 self.assertRaises(ParseError, db_conn.ParseQuery,
00143 bad_insert_query_extra_values)
00144 db_conn.CleanUp()
00145
00146 bad_insert_query_extra_paren_set = ('insert into test values (col1, col2) '
00147 ' values ( 1, "foo")();')
00148 self.assertRaises(ParseError, db_conn.ParseQuery,
00149 bad_insert_query_extra_paren_set)
00150 db_conn.CleanUp()
00151
00152 bad_insert_query_mismatched_vals = ('insert into test values (col1, col2) '
00153 ' values ("foo");')
00154 self.assertRaises(ParseError, db_conn.ParseQuery,
00155 bad_insert_query_mismatched_vals)
00156 db_conn.CleanUp()
00157
00158 query_normal_insert_set = ('insert subscriber set col= 1, col2 ="\'f\'b";')
00159 db_conn.ParseQuery(query_normal_insert_set)
00160 self.assert_(db_conn.command == 'INSERT')
00161 self.assert_(db_conn.table == 'subscriber')
00162 self.assertEqual(db_conn.targets, {'col': '1', 'col2': '\'f\'b'})
00163 db_conn.CleanUp()
00164
00165 query_normal_update = ('update subscriber set col1= 1, col2 ="foo";')
00166 db_conn.ParseQuery(query_normal_update)
00167 self.assert_(db_conn.command == 'UPDATE')
00168 self.assert_(db_conn.table == 'subscriber')
00169 self.assertEqual(db_conn.targets, {'col1': '1', 'col2': 'foo'})
00170 db_conn.CleanUp()
00171
00172 query_normal_update_cond = ('update subscriber set col1= 1, col2 ="foo" '
00173 'where foo = "bar" and id=1 and a="";')
00174 db_conn.ParseQuery(query_normal_update_cond)
00175 self.assert_(db_conn.command == 'UPDATE')
00176 self.assert_(db_conn.table == 'subscriber')
00177 self.assertEqual(db_conn.targets, {'col1': '1', 'col2': 'foo'})
00178 self.assertEqual(db_conn.conditions, {'foo': 'bar', 'id': '1', 'a': ''})
00179 db_conn.CleanUp()
00180
00181 bad_update_query_extra_paren = ('update test set (col1 = "foo");')
00182 self.assertRaises(ParseError, db_conn.ParseQuery,
00183 bad_update_query_extra_paren)
00184 db_conn.CleanUp()
00185
00186 bad_update_query_missing_table = ('update SET col1 = "foo";')
00187 self.assertRaises(ParseError, db_conn.ParseQuery,
00188 bad_update_query_missing_table)
00189 db_conn.CleanUp()
00190
00191 bad_update_query_missing_set = ('update test sett col1 = "foo";')
00192 self.assertRaises(ParseError, db_conn.ParseQuery,
00193 bad_update_query_missing_set)
00194 db_conn.CleanUp()
00195
00196 bad_update_query_missing_val = ('update test set col1 =;')
00197 self.assertRaises(ParseError, db_conn.ParseQuery,
00198 bad_update_query_missing_val)
00199 db_conn.CleanUp()
00200
00201 bad_update_query_missing_comma = ('update test set col1 = "foo" crap =5;')
00202 self.assertRaises(ParseError, db_conn.ParseQuery,
00203 bad_update_query_missing_comma)
00204 db_conn.CleanUp()
00205
00206 bad_update_query_missing_equal = ('update test set col1 = "foo", and 5;')
00207 self.assertRaises(ParseError, db_conn.ParseQuery,
00208 bad_update_query_missing_equal)
00209 db_conn.CleanUp()
00210
00211 bad_update_query_missing_col = ('update test set col1 = "foo", = 5;')
00212 self.assertRaises(ParseError, db_conn.ParseQuery,
00213 bad_update_query_missing_col)
00214 db_conn.CleanUp()
00215
00216 bad_update_query_double_col = ('update test set col1 = "foo", and a = 5;')
00217 self.assertRaises(ParseError, db_conn.ParseQuery,
00218 bad_update_query_double_col)
00219 db_conn.CleanUp()
00220
00221 query_normal_count = 'select col1, "col 2",col3 , "col4" from subscriber;'
00222 db_conn.ParseQuery(query_normal_count)
00223 self.assert_(db_conn.command == 'SELECT')
00224 self.assert_(db_conn.table == 'subscriber')
00225 self.assert_(db_conn.strings == ['col 2', 'col4'])
00226 self.assert_(db_conn.columns == ['col1', "'col 2'", 'col3', "'col4'"])
00227 db_conn.CleanUp()
00228
00229 query_normal_order_by = ('select col1, col2 from test'
00230 ' ORDER by col1;')
00231 db_conn.ParseQuery(query_normal_order_by)
00232 self.assert_(db_conn.command == 'SELECT')
00233 self.assert_(db_conn.table == 'test')
00234 self.assert_(db_conn.columns == ['col1', 'col2'])
00235 self.assert_(db_conn.order_by == 'col1')
00236 db_conn.CleanUp()
00237
00238 query_normal_order_by_cond = ('select col1, col2 from test where col="asdf"'
00239 ' and col2 = "foo" ORDER by col;')
00240 db_conn.ParseQuery(query_normal_order_by_cond)
00241 self.assert_(db_conn.command == 'SELECT')
00242 self.assert_(db_conn.table == 'test')
00243 self.assert_(db_conn.columns == ['col1', 'col2'])
00244 self.assert_(db_conn.conditions == {'col': 'asdf', 'col2': 'foo'})
00245 self.assert_(db_conn.order_by == 'col')
00246 db_conn.CleanUp()
00247
00248 query_normal_concat = ('select concat(uname,"@", domain) as email_addr '
00249 'from subscriber where id=3;')
00250 db_conn.ParseQuery(query_normal_concat)
00251 self.assert_(db_conn.command == 'SELECT')
00252 self.assert_(db_conn.table == 'subscriber')
00253 self.assert_(db_conn.columns == ['email_addr'])
00254 self.assert_(db_conn.conditions == {'id': '3'})
00255 self.assert_(db_conn.aliases == {'email_addr': ['uname', "'@'", 'domain']})
00256 db_conn.CleanUp()
00257
00258 query_normal_mult_concat = ('select concat(uname,"@", domain) as email,'
00259 ' foo as "bar" from table where id=3;')
00260 db_conn.ParseQuery(query_normal_mult_concat)
00261 self.assert_(db_conn.command == 'SELECT')
00262 self.assert_(db_conn.table == 'table')
00263 self.assert_(db_conn.columns == ['email', "'bar'"])
00264 self.assert_(db_conn.conditions == {'id': '3'})
00265 self.assert_(db_conn.aliases == {"'bar'": ['foo'],
00266 'email': ['uname', "'@'", 'domain']})
00267 db_conn.CleanUp()
00268
00269 bad_query_concat_no_as = ('select concat(col1,col2) from test'
00270 ' ORDER by col1 col2;')
00271 self.assertRaises(ParseError, db_conn.ParseQuery,
00272 bad_query_concat_no_as)
00273 db_conn.CleanUp()
00274
00275 bad_query_concat_no_as_arg = ('select concat(col1,col2) as from test'
00276 ' ORDER by col1 col2;')
00277 self.assertRaises(ParseError, db_conn.ParseQuery,
00278 bad_query_concat_no_as_arg)
00279 db_conn.CleanUp()
00280
00281 bad_query_concat_no_paren = ('select concat(col1,col2 as foo from test'
00282 ' ORDER by col1 col2;')
00283 self.assertRaises(ParseError, db_conn.ParseQuery,
00284 bad_query_concat_no_paren)
00285 db_conn.CleanUp()
00286
00287 bad_query_mult_order_by = ('select col1, col2 from test'
00288 ' ORDER by col1 col2;')
00289 self.assertRaises(ParseError, db_conn.ParseQuery,
00290 bad_query_mult_order_by)
00291 db_conn.CleanUp()
00292
00293 bad_query_missing_from = 'select * subscriber;'
00294 self.assertRaises(ParseError, db_conn.ParseQuery,
00295 bad_query_missing_from)
00296 db_conn.CleanUp()
00297
00298 bad_query_missing_comma = 'select col1 col2 col3 from subscriber;'
00299 self.assertRaises(ParseError, db_conn.ParseQuery,
00300 bad_query_missing_comma)
00301 db_conn.CleanUp()
00302
00303 bad_query_extra_comma = 'select col1,col2, from subscriber;'
00304 self.assertRaises(ParseError, db_conn.ParseQuery,
00305 bad_query_extra_comma)
00306 db_conn.CleanUp()
00307 bad_query_extra_comma = 'select col1,,col2 from subscriber;'
00308 self.assertRaises(ParseError, db_conn.ParseQuery,
00309 bad_query_extra_comma)
00310 db_conn.CleanUp()
00311 bad_query_extra_comma = 'select ,col1,col2 from subscriber;'
00312 self.assertRaises(ParseError, db_conn.ParseQuery,
00313 bad_query_extra_comma)
00314 db_conn.CleanUp()
00315
00316 bad_query_missing_and = ('select * from subscriber where column = asdf '
00317 ' something=missing_and;')
00318 self.assertRaises(ParseError, db_conn.ParseQuery,
00319 bad_query_missing_and)
00320 db_conn.CleanUp()
00321
00322 bad_query_missing_value = ('select * from subscriber where column = asdf'
00323 ' and something=;')
00324 self.assertRaises(ParseError, db_conn.ParseQuery,
00325 bad_query_missing_value)
00326 db_conn.CleanUp()
00327
00328 bad_query_unterm_str = ('select * from test where column ="asdf;')
00329 self.assertRaises(ParseError, db_conn.ParseQuery,
00330 bad_query_unterm_str)
00331 db_conn.CleanUp()
00332
00333 bad_select_query_missing_table = ('select * from where column ="asdf";')
00334 self.assertRaises(ParseError, db_conn.ParseQuery,
00335 bad_select_query_missing_table)
00336 db_conn.CleanUp()
00337
00338 def testOpenTable(self):
00339
00340 query = ('select * from test;')
00341 db_conn = DBText('./tests')
00342 db_conn.ParseQuery(query)
00343 db_conn.OpenTable()
00344 self.assertEqual(db_conn.header, {'col2': {'auto': False, 'null': True,
00345 'type': 'string', 'pos': 2},
00346 'id': {'auto': True, 'null': False,
00347 'type': 'int', 'pos': 1},
00348 'col1': {'auto': False, 'null': False,
00349 'type': 'string', 'pos': 0}})
00350
00351
00352 query = ('select * from test;')
00353 db_conn = DBText('./tests')
00354 db_conn.ParseQuery(query)
00355 db_conn.OpenTable()
00356 self.assertEqual(db_conn.data,
00357 [{'col1': 'item1\\:', 'id': 1, 'col2': 'item2'},
00358 {'col1': 'it\\:em1\\\\', 'id': 2, 'col2': ''},
00359 {'col1': '\\:item3', 'id': 3, 'col2': 'asdf\\:'}])
00360
00361
00362 query = ('select * from non_existent_table;')
00363 db_conn = DBText('./tests')
00364 db_conn.ParseQuery(query)
00365 self.assertRaises(ExecuteError, db_conn.OpenTable)
00366
00367
00368 query = ('select * from bad_table_wrong_type;')
00369 db_conn = DBText('./tests')
00370 db_conn.ParseQuery(query)
00371 self.assertRaises(ExecuteError, db_conn.OpenTable)
00372
00373
00374 query = ('select * from bad_table_short_row;')
00375 db_conn = DBText('./tests')
00376 db_conn.ParseQuery(query)
00377 self.assertRaises(ExecuteError, db_conn.OpenTable)
00378
00379
00380 query = ('select * from bad_table_long_row;')
00381 db_conn = DBText('./tests')
00382 db_conn.ParseQuery(query)
00383 self.assertRaises(ExecuteError, db_conn.OpenTable)
00384
00385
00386 query = ('select * from bad_table_null;')
00387 db_conn = DBText('./tests')
00388 db_conn.ParseQuery(query)
00389 self.assertRaises(ExecuteError, db_conn.OpenTable)
00390
00391
00392 query = ('select * from bad_table_int;')
00393 db_conn = DBText('./tests')
00394 db_conn.ParseQuery(query)
00395 self.assertRaises(ExecuteError, db_conn.OpenTable)
00396
00397 def testExecute(self):
00398 db_conn = DBText('./tests')
00399 writethru = False
00400
00401
00402 query = ("select count(*) from subscriber where username='monitor' and"
00403 " domain='test.com';")
00404 result = db_conn.Execute(query, writethru)
00405 self.assertEqual(result, [2])
00406 db_conn.CleanUp()
00407
00408 query = ('select count(*) from subscriber where '
00409 "username='test2';")
00410 result = db_conn.Execute(query, writethru)
00411 self.assertEqual(result, [1])
00412 db_conn.CleanUp()
00413
00414 query = ('select count(*) from subscriber where '
00415 "username='test1';")
00416 result = db_conn.Execute(query, writethru)
00417 self.assertEqual(result, [3])
00418 db_conn.CleanUp()
00419
00420
00421 query = ("select concat(username, '@', domain) as email_addr from "
00422 'subscriber where id = 3;')
00423 result = db_conn.Execute(query, writethru)
00424 self.assertEqual(result, [['test2@test.com']])
00425 db_conn.CleanUp()
00426
00427
00428 query = ("select * from subscriber where username='test2' and"
00429 " domain='test.com';")
00430 expected_result = [[3, 'test2', 'test.com', 'password', '', '',
00431 'test-team@test.com', 1202336327,
00432 '9fe9bfa1315b8202838838c3807a0a32',
00433 'fac1f260ebda200719de4aa29880ee05', '', '']]
00434 result = db_conn.Execute(query, writethru)
00435 self.assertEqual(result, expected_result)
00436 db_conn.CleanUp()
00437
00438 query = ('select * from subscriber where id = 3;')
00439 expected_result = [[3, 'test2', 'test.com', 'password', '', '',
00440 'test-team@test.com', 1202336327,
00441 '9fe9bfa1315b8202838838c3807a0a32',
00442 'fac1f260ebda200719de4aa29880ee05', '', '']]
00443 result = db_conn.Execute(query, writethru)
00444 self.assertEqual(result, expected_result)
00445 db_conn.CleanUp()
00446
00447
00448 query = ('select * from test order by non_existent_column;')
00449 self.assertRaises(ExecuteError, db_conn.Execute, query, writethru)
00450 db_conn.CleanUp()
00451
00452 query = ('select * from unsorted_table order by id;')
00453 result = db_conn.Execute(query, writethru)
00454 self.assertEqual(result, [[1, 'fred', 'test.com', 2125551234],
00455 [2, 'james', 'test4.com', 2125551231],
00456 [3, 'mike', 'test2.com', 2125551239],
00457 [4, 'alex', 'test1.com', 2125551237],
00458 [5, 'john', 'test.com', 2125551240]])
00459 db_conn.CleanUp()
00460
00461 query = ('select * from unsorted_table order by user;')
00462 result = db_conn.Execute(query, writethru)
00463 self.assertEqual(result, [[4, 'alex', 'test1.com', 2125551237],
00464 [1, 'fred', 'test.com', 2125551234],
00465 [2, 'james', 'test4.com', 2125551231],
00466 [5, 'john', 'test.com', 2125551240],
00467 [3, 'mike', 'test2.com', 2125551239]])
00468 db_conn.CleanUp()
00469
00470 query = ('select * from unsorted_table order by domain;')
00471 result = db_conn.Execute(query, writethru)
00472 self.assertEqual(result, [[1, 'fred', 'test.com', 2125551234],
00473 [5, 'john', 'test.com', 2125551240],
00474 [4, 'alex', 'test1.com', 2125551237],
00475 [3, 'mike', 'test2.com', 2125551239],
00476 [2, 'james', 'test4.com', 2125551231]])
00477 db_conn.CleanUp()
00478
00479 query = ('select * from unsorted_table order by number;')
00480 result = db_conn.Execute(query, writethru)
00481 self.assertEqual(result, [[2, 'james', 'test4.com', 2125551231],
00482 [1, 'fred', 'test.com', 2125551234],
00483 [4, 'alex', 'test1.com', 2125551237],
00484 [3, 'mike', 'test2.com', 2125551239],
00485 [5, 'john', 'test.com', 2125551240]])
00486 db_conn.CleanUp()
00487
00488
00489 query = ('delete from unsorted_table where id = 3;')
00490 result = db_conn.Execute(query, writethru)
00491 self.assertEqual(result, [1])
00492 self.assertEqual(db_conn.data, [{'id': 1, 'user': 'fred', 'domain':
00493 'test.com', 'number': 2125551234},
00494 {'id': 4, 'user': 'alex', 'domain':
00495 'test1.com', 'number': 2125551237},
00496 {'id': 2, 'user': 'james', 'domain':
00497 'test4.com', 'number': 2125551231},
00498 {'id': 5, 'user': 'john', 'domain':
00499 'test.com', 'number': 2125551240}])
00500 db_conn.CleanUp()
00501
00502 query = ('delete from unsorted_table where id = 5;')
00503 result = db_conn.Execute(query, writethru)
00504 self.assertEqual(db_conn.data, [{'id': 1, 'user': 'fred', 'domain':
00505 'test.com', 'number': 2125551234},
00506 {'id': 4, 'user': 'alex', 'domain':
00507 'test1.com', 'number': 2125551237},
00508 {'id': 2, 'user': 'james', 'domain':
00509 'test4.com', 'number': 2125551231},
00510 {'id': 3, 'user': 'mike', 'domain':
00511 'test2.com', 'number': 2125551239}])
00512 db_conn.CleanUp()
00513
00514
00515 query = ("insert into unsorted_table set user='jake', domain='test.com',"
00516 'number = 2125551456;')
00517 result = db_conn.Execute(query, writethru)
00518 self.assertEqual(db_conn.data, [{'id': 1, 'user': 'fred', 'domain':
00519 'test.com', 'number': 2125551234},
00520 {'id': 4, 'user': 'alex', 'domain':
00521 'test1.com', 'number': 2125551237},
00522 {'id': 2, 'user': 'james', 'domain':
00523 'test4.com', 'number': 2125551231},
00524 {'id': 3, 'user': 'mike', 'domain':
00525 'test2.com', 'number': 2125551239},
00526 {'id': 5, 'user': 'john', 'domain':
00527 'test.com', 'number': 2125551240},
00528 {'id': 6, 'user': 'jake', 'domain':
00529 'test.com', 'number': 2125551456}])
00530 db_conn.CleanUp()
00531
00532
00533 query = ("insert into test set col1='asdf';")
00534 result = db_conn.Execute(query, writethru)
00535 self.assertEqual(db_conn.data, [{'col2': 'item2', 'id': 1, 'col1':
00536 'item1\\:'},
00537 {'col2': '', 'id': 2, 'col1':
00538 'it\\:em1\\\\'},
00539 {'col2': 'asdf\\:', 'id': 3, 'col1':
00540 '\\:item3'},
00541 {'col2': '', 'id': 4, 'col1': 'asdf'}])
00542 db_conn.CleanUp()
00543
00544
00545 query = ("insert test ( col1) values ('asdf');")
00546 result = db_conn.Execute(query, writethru)
00547 self.assertEqual(db_conn.data, [{'col2': 'item2', 'id': 1, 'col1':
00548 'item1\\:'},
00549 {'col2': '', 'id': 2, 'col1':
00550 'it\\:em1\\\\'},
00551 {'col2': 'asdf\\:', 'id': 3, 'col1':
00552 '\\:item3'},
00553 {'col2': '', 'id': 4, 'col1': 'asdf'}])
00554 db_conn.CleanUp()
00555
00556
00557 query = ("insert into test set col1='as:df';")
00558 result = db_conn.Execute(query, writethru)
00559 self.assertEqual(db_conn.data, [{'col2': 'item2', 'id': 1, 'col1':
00560 'item1\\:'},
00561 {'col2': '', 'id': 2, 'col1':
00562 'it\\:em1\\\\'},
00563 {'col2': 'asdf\\:', 'id': 3, 'col1':
00564 '\\:item3'},
00565 {'col2': '', 'id': 4, 'col1': 'as\:df'}])
00566 db_conn.CleanUp()
00567
00568
00569 query = ("insert into test set col1='as\:df';")
00570 result = db_conn.Execute(query, writethru)
00571 self.assertEqual(db_conn.data, [{'col2': 'item2', 'id': 1, 'col1':
00572 'item1\\:'},
00573 {'col2': '', 'id': 2, 'col1':
00574 'it\\:em1\\\\'},
00575 {'col2': 'asdf\\:', 'id': 3, 'col1':
00576 '\\:item3'},
00577 {'col2': '', 'id': 4, 'col1': 'as\\\\\\:df'}])
00578 db_conn.CleanUp()
00579
00580
00581 query = ("insert test ( col2) values ('asdf');")
00582 self.assertRaises(ExecuteError, db_conn.Execute, query, writethru)
00583 db_conn.CleanUp()
00584
00585
00586 query = ("insert test (col1, id) values ('asdf', 4);")
00587 self.assertRaises(ExecuteError, db_conn.Execute, query, writethru)
00588 db_conn.CleanUp()
00589
00590
00591 query = ("update test set col2='' where id = 3;")
00592 result = db_conn.Execute(query, writethru)
00593 self.assertEqual(db_conn.data, [{'col2': 'item2', 'id': 1, 'col1':
00594 'item1\\:'},
00595 {'col2': '', 'id': 2, 'col1':
00596 'it\\:em1\\\\'},
00597 {'col2': '', 'id': 3, 'col1':
00598 '\\:item3'}])
00599 db_conn.CleanUp()
00600
00601
00602 if __name__ == '__main__':
00603 unittest.main()