diff -r 922d7fb63384 -r 6aad5e35efe8 pgtoolkit/pgdatadiff.py --- a/pgtoolkit/pgdatadiff.py Fri Aug 17 11:07:22 2012 +0200 +++ b/pgtoolkit/pgdatadiff.py Fri Aug 17 11:14:31 2012 +0200 @@ -162,26 +162,29 @@ ''' curs1, curs2 = self._select() - row1 = curs1.fetchone_adapted() - row2 = curs2.fetchone_adapted() + row1 = curs1.fetchone_dict() + row2 = curs2.fetchone_dict() while True: if row1 is None and row2 is None: break - diff = self._compare_row(row1, row2) + diff = self._compare_row(row1, row2, curs1.adapt, curs2.adapt) if diff: yield diff if diff.change == '-': - row1 = curs1.fetchone_adapted() + row1 = curs1.fetchone_dict() continue if diff.change == '+': - row2 = curs2.fetchone_adapted() + row2 = curs2.fetchone_dict() continue # change == '*' or not diff - row1 = curs1.fetchone_adapted() - row2 = curs2.fetchone_adapted() + row1 = curs1.fetchone_dict() + row2 = curs2.fetchone_dict() + + curs1.close() + curs2.close() def print_diff(self): '''Print differencies between data of two tables. @@ -222,8 +225,8 @@ query1 = 'SELECT ' + columns_sel + ' FROM ' + self.fulltable1 + ' ORDER BY ' + pkey_sel query2 = 'SELECT ' + columns_sel + ' FROM ' + self.fulltable2 + ' ORDER BY ' + pkey_sel - curs1 = self.conn1.cursor() - curs2 = self.conn2.cursor() + curs1 = self.conn1.cursor('curs1') + curs2 = self.conn2.cursor('curs2') curs1.execute(query1) curs2.execute(query2) @@ -243,21 +246,26 @@ return None - def _compare_row(self, row1, row2): + def _compare_row(self, row1, row2, adapt1, adapt2): if row2 is None: + row1 = adapt1(row1) key = OrderedDict(zip(self.pkeycolnames, [row1[colname] for colname in self.pkeycolnames])) return DiffData('-', row1, None, key=key) if row1 is None: + row2 = adapt2(row2) return DiffData('+', None, row2) - for keyname in self.pkeycolnames: if row1[keyname] < row2[keyname]: + row1 = adapt1(row1) key = OrderedDict(zip(self.pkeycolnames, [row1[colname] for colname in self.pkeycolnames])) return DiffData('-', row1, None, key=key) for keyname in self.pkeycolnames: if row1[keyname] > row2[keyname]: + row2 = adapt2(row2) return DiffData('+', None, row2) + row1 = adapt1(row1) + row2 = adapt2(row2) return self._compare_data(row1, row2)