diff options
author | Daniele Varrazzo <daniele.varrazzo@gmail.com> | 2017-01-01 05:59:21 +0100 |
---|---|---|
committer | Daniele Varrazzo <daniele.varrazzo@gmail.com> | 2017-01-01 05:59:21 +0100 |
commit | 600416aafc58ac6aaaa4aeb3629518c7c1f788e0 (patch) | |
tree | ec26c1bd75ac6c6b46a95c0742a14f5206699fcd /lib/sql.py | |
parent | c4a67fc1c125c541fef4f4f3f19504a784aec616 (diff) | |
download | psycopg2-600416aafc58ac6aaaa4aeb3629518c7c1f788e0.tar.gz |
Fixed sql stuff in Py3
Diffstat (limited to 'lib/sql.py')
-rw-r--r-- | lib/sql.py | 24 |
1 files changed, 15 insertions, 9 deletions
@@ -24,7 +24,9 @@ # License for more details. import re +import sys import collections + from psycopg2 import extensions as ext @@ -146,19 +148,23 @@ class Literal(Composible): return "sql.Literal(%r)" % (self._wrapped,) def as_string(self, conn_or_curs): + # is it a connection or cursor? + if isinstance(conn_or_curs, ext.connection): + conn = conn_or_curs + elif isinstance(conn_or_curs, ext.cursor): + conn = conn_or_curs.connection + else: + raise TypeError("conn_or_curs must be a connection or a cursor") + a = ext.adapt(self._wrapped) if hasattr(a, 'prepare'): - # is it a connection or cursor? - if isinstance(conn_or_curs, ext.connection): - conn = conn_or_curs - elif isinstance(conn_or_curs, ext.cursor): - conn = conn_or_curs.connection - else: - raise TypeError("conn_or_curs must be a connection or a cursor") - a.prepare(conn) - return a.getquoted() + rv = a.getquoted() + if sys.version_info[0] >= 3 and isinstance(rv, bytes): + rv = rv.decode(ext.encodings[conn.encoding]) + + return rv def __mul__(self, n): return Composed([self] * n) |