summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>2017-02-01 02:36:54 +0000
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>2017-02-01 02:36:54 +0000
commit2e2dcd536bb06c07747e28ad98f4fb8e3053748e (patch)
tree4d8babf5760b29e3ecb96212f56b7f63da168647
parenta95fd3df1abc0282f1c47fa2170191f037c3c8de (diff)
downloadpsycopg2-2e2dcd536bb06c07747e28ad98f4fb8e3053748e.tar.gz
Fixed fast execute functions with Python 3
-rw-r--r--lib/extras.py6
-rwxr-xr-xtests/test_types_extras.py4
2 files changed, 6 insertions, 4 deletions
diff --git a/lib/extras.py b/lib/extras.py
index 85963c9..2636655 100644
--- a/lib/extras.py
+++ b/lib/extras.py
@@ -1177,7 +1177,7 @@ def execute_batch(cur, sql, argslist, page_size=100):
"""
for page in _paginate(argslist, page_size=page_size):
sqls = [cur.mogrify(sql, args) for args in page]
- cur.execute(";".join(sqls))
+ cur.execute(b";".join(sqls))
def execute_values(cur, sql, argslist, template=None, page_size=100):
@@ -1219,5 +1219,7 @@ def execute_values(cur, sql, argslist, template=None, page_size=100):
for page in _paginate(argslist, page_size=page_size):
if template is None:
template = '(%s)' % ','.join(['%s'] * len(page[0]))
- values = ",".join(cur.mogrify(template, args) for args in page)
+ values = b",".join(cur.mogrify(template, args) for args in page)
+ if isinstance(values, bytes) and _sys.version_info[0] > 2:
+ values = values.decode(_ext.encodings[cur.connection.encoding])
cur.execute(sql % (values,))
diff --git a/tests/test_types_extras.py b/tests/test_types_extras.py
index ab8e170..952208c 100755
--- a/tests/test_types_extras.py
+++ b/tests/test_types_extras.py
@@ -1829,7 +1829,7 @@ class TestFastExecute(ConnectingTestCase):
page_size=10)
# last command was 5 statements
- self.assertEqual(sum(c == ';' for c in cur.query), 4)
+ self.assertEqual(sum(c == u';' for c in cur.query.decode('ascii')), 4)
cur.execute("select id, val from testfast order by id")
self.assertEqual(cur.fetchall(), [(i, i * 10) for i in range(25)])
@@ -1886,7 +1886,7 @@ class TestFastExecute(ConnectingTestCase):
page_size=10)
# last statement was 5 tuples (one parens is for the fields list)
- self.assertEqual(sum(c == '(' for c in cur.query), 6)
+ self.assertEqual(sum(c == '(' for c in cur.query.decode('ascii')), 6)
cur.execute("select id, val from testfast order by id")
self.assertEqual(cur.fetchall(), [(i, i * 10) for i in range(25)])