mirror of
https://github.com/psycopg/psycopg2.git
synced 2025-03-03 15:45:46 +03:00
Merge remote-tracking branch 'jdufresne/json'
This commit is contained in:
commit
06d4788811
32
lib/_json.py
32
lib/_json.py
|
@ -27,22 +27,13 @@ extensions importing register_json from extras.
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||||
# License for more details.
|
# License for more details.
|
||||||
|
|
||||||
|
import json
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from psycopg2._psycopg import ISQLQuote, QuotedString
|
from psycopg2._psycopg import ISQLQuote, QuotedString
|
||||||
from psycopg2._psycopg import new_type, new_array_type, register_type
|
from psycopg2._psycopg import new_type, new_array_type, register_type
|
||||||
|
|
||||||
|
|
||||||
# import the best json implementation available
|
|
||||||
if sys.version_info[:2] >= (2, 6):
|
|
||||||
import json
|
|
||||||
else:
|
|
||||||
try:
|
|
||||||
import simplejson as json
|
|
||||||
except ImportError:
|
|
||||||
json = None
|
|
||||||
|
|
||||||
|
|
||||||
# oids from PostgreSQL 9.2
|
# oids from PostgreSQL 9.2
|
||||||
JSON_OID = 114
|
JSON_OID = 114
|
||||||
JSONARRAY_OID = 199
|
JSONARRAY_OID = 199
|
||||||
|
@ -67,13 +58,7 @@ class Json(object):
|
||||||
def __init__(self, adapted, dumps=None):
|
def __init__(self, adapted, dumps=None):
|
||||||
self.adapted = adapted
|
self.adapted = adapted
|
||||||
self._conn = None
|
self._conn = None
|
||||||
|
self._dumps = dumps or json.dumps
|
||||||
if dumps is not None:
|
|
||||||
self._dumps = dumps
|
|
||||||
elif json is not None:
|
|
||||||
self._dumps = json.dumps
|
|
||||||
else:
|
|
||||||
self._dumps = None
|
|
||||||
|
|
||||||
def __conform__(self, proto):
|
def __conform__(self, proto):
|
||||||
if proto is ISQLQuote:
|
if proto is ISQLQuote:
|
||||||
|
@ -86,13 +71,7 @@ class Json(object):
|
||||||
provided in the constructor. You can override this method to create a
|
provided in the constructor. You can override this method to create a
|
||||||
customized JSON wrapper.
|
customized JSON wrapper.
|
||||||
"""
|
"""
|
||||||
dumps = self._dumps
|
return self._dumps(obj)
|
||||||
if dumps is not None:
|
|
||||||
return dumps(obj)
|
|
||||||
else:
|
|
||||||
raise ImportError(
|
|
||||||
"json module not available: "
|
|
||||||
"you should provide a dumps function")
|
|
||||||
|
|
||||||
def prepare(self, conn):
|
def prepare(self, conn):
|
||||||
self._conn = conn
|
self._conn = conn
|
||||||
|
@ -181,10 +160,7 @@ def register_default_jsonb(conn_or_curs=None, globally=False, loads=None):
|
||||||
def _create_json_typecasters(oid, array_oid, loads=None, name='JSON'):
|
def _create_json_typecasters(oid, array_oid, loads=None, name='JSON'):
|
||||||
"""Create typecasters for json data type."""
|
"""Create typecasters for json data type."""
|
||||||
if loads is None:
|
if loads is None:
|
||||||
if json is None:
|
loads = json.loads
|
||||||
raise ImportError("no json module available")
|
|
||||||
else:
|
|
||||||
loads = json.loads
|
|
||||||
|
|
||||||
def typecast_json(s, cur):
|
def typecast_json(s, cur):
|
||||||
if s is None:
|
if s is None:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user