@@ -3504,3 +3504,77 @@ def test_set(self):
3504
3504
for row in cur :
3505
3505
self .assertEqual (row , dict (zip (('id' , 'name' , 'dept' ), data [i ])))
3506
3506
i += 1
3507
+
3508
+
3509
+ class BugOra20834643 (tests .MySQLConnectorTests ):
3510
+ """BUG#20834643: ATTRIBUTE ERROR NOTICED WHILE TRYING TO PROMOTE SERVERS
3511
+ """
3512
+ def setUp (self ):
3513
+ config = tests .get_mysql_config ()
3514
+ cnx = connection .MySQLConnection (** config )
3515
+ cur = cnx .cursor ()
3516
+
3517
+ self .tbl = 'Bug20834643'
3518
+ cur .execute ("DROP TABLE IF EXISTS {0}" .format (self .tbl ))
3519
+
3520
+ create = ("CREATE TABLE {0} (id INT, name VARCHAR(5), dept VARCHAR(5)) "
3521
+ "DEFAULT CHARSET latin1" .format (self .tbl ))
3522
+ cur .execute (create )
3523
+ cur .close ()
3524
+ cnx .close ()
3525
+
3526
+ def tearDown (self ):
3527
+ config = tests .get_mysql_config ()
3528
+ cnx = connection .MySQLConnection (** config )
3529
+ cur = cnx .cursor ()
3530
+ cur .execute ("DROP TABLE IF EXISTS {0}" .format (self .tbl ))
3531
+ cur .close ()
3532
+ cnx .close ()
3533
+
3534
+ @foreach_cnx ()
3535
+ def test_set (self ):
3536
+ cur = self .cnx .cursor ()
3537
+ sql = "INSERT INTO {0} VALUES(%s, %s, %s)" .format (self .tbl )
3538
+
3539
+ data = [
3540
+ (1 , 'abc' , 'cs' ),
3541
+ (2 , 'def' , 'is' ),
3542
+ (3 , 'ghi' , 'cs' ),
3543
+ (4 , 'jkl' , 'it' ),
3544
+ ]
3545
+ cur .executemany (sql , data )
3546
+ cur .close ()
3547
+
3548
+ cur = self .cnx .cursor (named_tuple = True )
3549
+ cur .execute ("SELECT * FROM {0}" .format (self .tbl ))
3550
+
3551
+ res = cur .fetchone ()
3552
+ self .assertEqual (data [0 ], (res .id , res .name , res .dept ))
3553
+ res = cur .fetchall ()
3554
+ exp = []
3555
+ for row in res :
3556
+ exp .append ((row .id , row .name , row .dept ))
3557
+ self .assertEqual (exp , data [1 :])
3558
+ cur .close ()
3559
+
3560
+ cur = self .cnx .cursor (named_tuple = True , buffered = True )
3561
+ cur .execute ("SELECT * FROM {0}" .format (self .tbl ))
3562
+ res = cur .fetchone ()
3563
+ self .assertEqual (data [0 ], (res .id , res .name , res .dept ))
3564
+ res = cur .fetchall ()
3565
+ exp = []
3566
+ for row in res :
3567
+ exp .append ((row .id , row .name , row .dept ))
3568
+ self .assertEqual (exp , data [1 :])
3569
+ cur .close ()
3570
+
3571
+ cur = self .cnx .cursor (named_tuple = True , buffered = False )
3572
+ cur .execute ("SELECT * FROM {0}" .format (self .tbl ))
3573
+ res = cur .fetchone ()
3574
+ self .assertEqual (data [0 ], (res .id , res .name , res .dept ))
3575
+ res = cur .fetchall ()
3576
+ exp = []
3577
+ for row in res :
3578
+ exp .append ((row .id , row .name , row .dept ))
3579
+ self .assertEqual (exp , data [1 :])
3580
+ cur .close ()
0 commit comments