mirror of
https://github.com/psycopg/psycopg2.git
synced 2024-11-22 17:06:33 +03:00
Added doc notes about how to avoid JSON parsing
Added FAQ too as it has bitten more than one user (see tickets #172, #190).
This commit is contained in:
parent
85b1914ad6
commit
4ed9dc1435
|
@ -189,6 +189,20 @@ the `Json` adapter::
|
||||||
Reading from the database, |pgjson| values will be automatically converted to
|
Reading from the database, |pgjson| values will be automatically converted to
|
||||||
Python objects.
|
Python objects.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
If you are using the PostgreSQL :sql:`json` data type but you want to read
|
||||||
|
it as string in Python instead of having it parsed, your can either cast
|
||||||
|
the column to :sql:`text` in the query (it is an efficient operation, that
|
||||||
|
doesn't involve a copy)::
|
||||||
|
|
||||||
|
cur.execute("select jsondata::text from mytable")
|
||||||
|
|
||||||
|
or you can register a no-op `!loads()` function with
|
||||||
|
`register_default_json()`::
|
||||||
|
|
||||||
|
psycopg2.extras.register_default_json(loads=lambda x: x)
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
You can use `~psycopg2.extensions.register_adapter()` to adapt any Python
|
You can use `~psycopg2.extensions.register_adapter()` to adapt any Python
|
||||||
|
@ -204,7 +218,7 @@ Python objects.
|
||||||
effects.
|
effects.
|
||||||
|
|
||||||
If you want to customize the adaptation from Python to PostgreSQL you can
|
If you want to customize the adaptation from Python to PostgreSQL you can
|
||||||
either provide a custom `!dumps()` function to `!Json`::
|
either provide a custom `!dumps()` function to `Json`::
|
||||||
|
|
||||||
curs.execute("insert into mytable (jsondata) values (%s)",
|
curs.execute("insert into mytable (jsondata) values (%s)",
|
||||||
[Json({'a': 100}, dumps=simplejson.dumps)])
|
[Json({'a': 100}, dumps=simplejson.dumps)])
|
||||||
|
|
|
@ -125,6 +125,18 @@ Psycopg converts :sql:`decimal`\/\ :sql:`numeric` database types into Python `!D
|
||||||
`!psycopg2._psycopg.DECIMAL` instead.
|
`!psycopg2._psycopg.DECIMAL` instead.
|
||||||
|
|
||||||
|
|
||||||
|
.. _faq-json-adapt:
|
||||||
|
.. cssclass:: faq
|
||||||
|
|
||||||
|
Psycopg automatically converts PostgreSQL :sql:`json` data into Python objects. How can I receive strings instead?
|
||||||
|
The easiest way to avoid JSON parsing is to register a no-op function with
|
||||||
|
`~psycopg2.extras.register_default_json()`::
|
||||||
|
|
||||||
|
psycopg2.extras.register_default_json(loads=lambda x: x)
|
||||||
|
|
||||||
|
See :ref:`adapt-json` for further details.
|
||||||
|
|
||||||
|
|
||||||
.. _faq-bytea-9.0:
|
.. _faq-bytea-9.0:
|
||||||
.. cssclass:: faq
|
.. cssclass:: faq
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user