From 83fede1f8da84b704c7f2c89d75ad7315d0b0c65 Mon Sep 17 00:00:00 2001 From: baztian Date: Sun, 12 Dec 2010 20:35:07 +0100 Subject: [PATCH] Fixed bug 688290 "NULL values with converters error on fetch." --- src/jaydebeapi/dbapi2.py | 7 ++++--- src/test/data/create.sql | 1 + src/test/data/insert.sql | 4 ++-- src/test/integration_test.py | 10 +++++----- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/jaydebeapi/dbapi2.py b/src/jaydebeapi/dbapi2.py index 437e21f..93ba276 100644 --- a/src/jaydebeapi/dbapi2.py +++ b/src/jaydebeapi/dbapi2.py @@ -266,9 +266,10 @@ class Cursor(object): for col in range(1, self._meta.getColumnCount() + 1): sqltype = self._meta.getColumnType(col) v = self._rs.getObject(col) - converter = _converters.get(sqltype) - if converter: - v = converter(v) + if v: + converter = _converters.get(sqltype) + if converter: + v = converter(v) row.append(v) return tuple(row) diff --git a/src/test/data/create.sql b/src/test/data/create.sql index 14b5e50..668d9f8 100644 --- a/src/test/data/create.sql +++ b/src/test/data/create.sql @@ -2,6 +2,7 @@ create table konto ( "KONTO_ID" TIMESTAMP default CURRENT_TIMESTAMP not null, "KONTO_NR" INTEGER not null, "SALDO" DECIMAL default 0.0 not null, +"SPERRE" DECIMAL, primary key ("KONTO_ID") ); diff --git a/src/test/data/insert.sql b/src/test/data/insert.sql index 6d3a945..ed4e988 100644 --- a/src/test/data/insert.sql +++ b/src/test/data/insert.sql @@ -1,2 +1,2 @@ -insert into Konto values ('2009-09-10 14:15:22.123456', 18, 12.4); -insert into Konto values ('2009-09-11 14:15:22.123456', 19, 12.9); +insert into Konto values ('2009-09-10 14:15:22.123456', 18, 12.4, null); +insert into Konto values ('2009-09-11 14:15:22.123456', 19, 12.9, 1); diff --git a/src/test/integration_test.py b/src/test/integration_test.py index b600b87..4dbf101 100644 --- a/src/test/integration_test.py +++ b/src/test/integration_test.py @@ -93,20 +93,20 @@ class IntegrationTest(TestCase): cursor = self.conn.cursor() cursor.execute("select * from konto") result = cursor.fetchall() - assert [(u'2009-09-10 14:15:22.123456', 18, 12.4), - (u'2009-09-11 14:15:22.123456', 19, 12.9)] == result + assert [(u'2009-09-10 14:15:22.123456', 18, 12.4, None), + (u'2009-09-11 14:15:22.123456', 19, 12.9, 1)] == result def test_execute_and_fetch_parameter(self): cursor = self.conn.cursor() cursor.execute("select * from konto where konto_nr = ?", 18) result = cursor.fetchall() - assert [(u'2009-09-10 14:15:22.123456', 18, 12.4)] == result + assert [(u'2009-09-10 14:15:22.123456', 18, 12.4, None)] == result def test_execute_and_fetchone(self): cursor = self.conn.cursor() cursor.execute("select * from konto order by konto_nr") result = cursor.fetchone() - assert (u'2009-09-10 14:15:22.123456', 18, 12.4) == result + assert (u'2009-09-10 14:15:22.123456', 18, 12.4, None) == result def test_execute_reset_description_without_execute_result(self): """Excpect the descriptions property being reset when no query @@ -130,7 +130,7 @@ class IntegrationTest(TestCase): cursor = self.conn.cursor() cursor.execute("select * from konto order by konto_nr") result = cursor.fetchmany() - assert [(u'2009-09-10 14:15:22.123456', 18, 12.4)] == result + assert [(u'2009-09-10 14:15:22.123456', 18, 12.4, None)] == result def test_executemany(self): cursor = self.conn.cursor()