From c37c256dfd0f3db98773651d450eb687b753b821 Mon Sep 17 00:00:00 2001 From: Pavel Cisar Date: Thu, 24 Nov 2016 10:49:10 +0000 Subject: [PATCH] Fix for PYFB-67 --- fdb/fbcore.py | 2 ++ test/testfdb.py | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/fdb/fbcore.py b/fdb/fbcore.py index de05037..d8ea31f 100644 --- a/fdb/fbcore.py +++ b/fdb/fbcore.py @@ -3561,6 +3561,8 @@ def execute(self, operation, parameters=None): :raises ProgrammingError: When more parameters than expected are suplied. :raises DatabaseError: When error is returned by server. """ + if is_dead_proxy(self._ps): + self._ps = None if self._ps != None: self._ps.close() if not self._transaction.active: diff --git a/test/testfdb.py b/test/testfdb.py index 5b4ddfd..1f3cfca 100644 --- a/test/testfdb.py +++ b/test/testfdb.py @@ -677,12 +677,25 @@ def setUp(self): self.dbfile = os.path.join(self.dbpath,self.FBTEST_DB) self.con = fdb.connect(host=FBTEST_HOST,database=self.dbfile, user=FBTEST_USER,password=FBTEST_PASSWORD) - #self.con.execute_immediate("recreate table t (c1 integer)") - #self.con.commit() + self.con.execute_immediate("recreate table t (c1 integer primary key)") + self.con.commit() def tearDown(self): self.con.execute_immediate("delete from t") self.con.commit() self.con.close() + def test_executemany(self): + cur = self.con.cursor() + cur.executemany("insert into t values(?)",[(1,),(2,)]) + cur.executemany("insert into t values(?)",[(3,),(4,)]) + self.con.commit() + p = cur.prep("insert into t values(?)") + cur.executemany(p,[(5,),(6,)]) + cur.executemany(p,[(7,),(8,)]) + self.con.commit() + cur.execute("select * from T order by c1") + rows = cur.fetchall() + self.assertListEqual(rows,[(1,),(2,),(3,),(4,), + (5,),(6,),(7,),(8,)]) def test_iteration(self): if self.con.ods < fdb.ODS_FB_30: data = [('USA', 'Dollar'), ('England', 'Pound'), ('Canada', 'CdnDlr'),