diff options
Diffstat (limited to 'lib/sqlalchemy/dialects/postgresql')
| -rw-r--r-- | lib/sqlalchemy/dialects/postgresql/__init__.py | 108 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/postgresql/array.py | 21 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/postgresql/base.py | 82 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/postgresql/dml.py | 15 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/postgresql/ext.py | 10 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/postgresql/hstore.py | 5 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/postgresql/json.py | 12 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/postgresql/pg8000.py | 37 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/postgresql/psycopg2.py | 72 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/postgresql/psycopg2cffi.py | 8 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/postgresql/pygresql.py | 34 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/postgresql/pypostgresql.py | 14 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/postgresql/ranges.py | 1 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/postgresql/zxjdbc.py | 3 |
14 files changed, 221 insertions, 201 deletions
diff --git a/lib/sqlalchemy/dialects/postgresql/__init__.py b/lib/sqlalchemy/dialects/postgresql/__init__.py index 9e65484fa..a269770d1 100644 --- a/lib/sqlalchemy/dialects/postgresql/__init__.py +++ b/lib/sqlalchemy/dialects/postgresql/__init__.py @@ -5,60 +5,61 @@ # This module is part of SQLAlchemy and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php -from . import ( - base, - psycopg2, - pg8000, - pypostgresql, - pygresql, - zxjdbc, - psycopg2cffi, -) # noqa +from . import base +from . import pg8000 # noqa +from . import psycopg2 # noqa +from . import psycopg2cffi # noqa +from . import pygresql # noqa +from . import pypostgresql # noqa +from . import zxjdbc # noqa +from .array import All +from .array import Any +from .array import ARRAY +from .array import array +from .base import BIGINT +from .base import BIT +from .base import BOOLEAN +from .base import BYTEA +from .base import CHAR +from .base import CIDR +from .base import CreateEnumType +from .base import DATE +from .base import DOUBLE_PRECISION +from .base import DropEnumType +from .base import ENUM +from .base import FLOAT +from .base import INET +from .base import INTEGER +from .base import INTERVAL +from .base import MACADDR +from .base import MONEY +from .base import NUMERIC +from .base import OID +from .base import REAL +from .base import REGCLASS +from .base import SMALLINT +from .base import TEXT +from .base import TIME +from .base import TIMESTAMP +from .base import TSVECTOR +from .base import UUID +from .base import VARCHAR +from .dml import Insert +from .dml import insert +from .ext import aggregate_order_by +from .ext import array_agg +from .ext import ExcludeConstraint +from .hstore import HSTORE +from .hstore import hstore +from .json import JSON +from .json import JSONB +from .ranges import DATERANGE +from .ranges import INT4RANGE +from .ranges import INT8RANGE +from .ranges import NUMRANGE +from .ranges import TSRANGE +from .ranges import TSTZRANGE -from .base import ( - INTEGER, - BIGINT, - SMALLINT, - VARCHAR, - CHAR, - TEXT, - NUMERIC, - FLOAT, - REAL, - INET, - CIDR, - UUID, - BIT, - MACADDR, - MONEY, - OID, - REGCLASS, - DOUBLE_PRECISION, - TIMESTAMP, - TIME, - DATE, - BYTEA, - BOOLEAN, - INTERVAL, - ENUM, - TSVECTOR, - DropEnumType, - CreateEnumType, -) -from .hstore import HSTORE, hstore -from .json import JSON, JSONB -from .array import array, ARRAY, Any, All -from .ext import aggregate_order_by, ExcludeConstraint, array_agg -from .dml import insert, Insert - -from .ranges import ( - INT4RANGE, - INT8RANGE, - NUMRANGE, - DATERANGE, - TSRANGE, - TSTZRANGE, -) base.dialect = dialect = psycopg2.dialect @@ -98,6 +99,7 @@ __all__ = ( "INT8RANGE", "NUMRANGE", "DATERANGE", + "TSVECTOR", "TSRANGE", "TSTZRANGE", "JSON", diff --git a/lib/sqlalchemy/dialects/postgresql/array.py b/lib/sqlalchemy/dialects/postgresql/array.py index 07167f9d0..af1469880 100644 --- a/lib/sqlalchemy/dialects/postgresql/array.py +++ b/lib/sqlalchemy/dialects/postgresql/array.py @@ -5,13 +5,15 @@ # This module is part of SQLAlchemy and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php -from .base import ischema_names, colspecs -from ...sql import expression, operators -from ...sql.base import SchemaEventTarget +from .base import colspecs +from .base import ischema_names from ... import types as sqltypes +from ...sql import expression +from ...sql import operators + try: - from uuid import UUID as _python_UUID + from uuid import UUID as _python_UUID # noqa except ImportError: _python_UUID = None @@ -142,13 +144,14 @@ class ARRAY(sqltypes.ARRAY): ) The :class:`.postgresql.ARRAY` type provides all operations defined on the - core :class:`.types.ARRAY` type, including support for "dimensions", indexed - access, and simple matching such as :meth:`.types.ARRAY.Comparator.any` - and :meth:`.types.ARRAY.Comparator.all`. :class:`.postgresql.ARRAY` class also + core :class:`.types.ARRAY` type, including support for "dimensions", + indexed access, and simple matching such as + :meth:`.types.ARRAY.Comparator.any` and + :meth:`.types.ARRAY.Comparator.all`. :class:`.postgresql.ARRAY` class also provides PostgreSQL-specific methods for containment operations, including :meth:`.postgresql.ARRAY.Comparator.contains` - :meth:`.postgresql.ARRAY.Comparator.contained_by`, - and :meth:`.postgresql.ARRAY.Comparator.overlap`, e.g.:: + :meth:`.postgresql.ARRAY.Comparator.contained_by`, and + :meth:`.postgresql.ARRAY.Comparator.overlap`, e.g.:: mytable.c.data.contains([1, 2]) diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py index 11833da57..e77b2880f 100644 --- a/lib/sqlalchemy/dialects/postgresql/base.py +++ b/lib/sqlalchemy/dialects/postgresql/base.py @@ -290,13 +290,13 @@ use the :meth:`._UpdateBase.returning` method on a per-statement basis:: INSERT...ON CONFLICT (Upsert) ------------------------------ -Starting with version 9.5, PostgreSQL allows "upserts" (update or insert) -of rows into a table via the ``ON CONFLICT`` clause of the ``INSERT`` statement. -A candidate row will only be inserted if that row does not violate -any unique constraints. In the case of a unique constraint violation, -a secondary action can occur which can be either "DO UPDATE", indicating -that the data in the target row should be updated, or "DO NOTHING", -which indicates to silently skip this row. +Starting with version 9.5, PostgreSQL allows "upserts" (update or insert) of +rows into a table via the ``ON CONFLICT`` clause of the ``INSERT`` statement. A +candidate row will only be inserted if that row does not violate any unique +constraints. In the case of a unique constraint violation, a secondary action +can occur which can be either "DO UPDATE", indicating that the data in the +target row should be updated, or "DO NOTHING", which indicates to silently skip +this row. Conflicts are determined using existing unique constraints and indexes. These constraints may be identified either using their name as stated in DDL, @@ -331,8 +331,9 @@ Both methods supply the "target" of the conflict using either the named constraint or by column inference: * The :paramref:`.Insert.on_conflict_do_update.index_elements` argument - specifies a sequence containing string column names, :class:`.Column` objects, - and/or SQL expression elements, which would identify a unique index:: + specifies a sequence containing string column names, :class:`.Column` + objects, and/or SQL expression elements, which would identify a unique + index:: do_update_stmt = insert_stmt.on_conflict_do_update( index_elements=['id'], @@ -915,34 +916,37 @@ E.g.:: """ from collections import defaultdict -import re import datetime as dt +import re - -from sqlalchemy.sql import elements -from ... import sql, schema, exc, util -from ...engine import default, reflection -from ...sql import compiler, expression +from ... import exc +from ... import schema +from ... import sql +from ... import util +from ...engine import default +from ...engine import reflection +from ...sql import compiler +from ...sql import elements +from ...sql import expression from ...sql import sqltypes +from ...types import BIGINT +from ...types import BOOLEAN +from ...types import CHAR +from ...types import DATE +from ...types import FLOAT +from ...types import INTEGER +from ...types import NUMERIC +from ...types import REAL +from ...types import SMALLINT +from ...types import TEXT +from ...types import VARCHAR + try: - from uuid import UUID as _python_UUID + from uuid import UUID as _python_UUID # noqa except ImportError: _python_UUID = None -from sqlalchemy.types import ( - INTEGER, - BIGINT, - SMALLINT, - VARCHAR, - CHAR, - TEXT, - FLOAT, - NUMERIC, - DATE, - BOOLEAN, - REAL, -) AUTOCOMMIT_REGEXP = re.compile( r"\s*(?:UPDATE|INSERT|CREATE|DELETE|DROP|ALTER|GRANT|REVOKE|" @@ -2022,7 +2026,7 @@ class PGDDLCompiler(compiler.DDLCompiler): class PGTypeCompiler(compiler.GenericTypeCompiler): - def visit_TSVECTOR(self, type, **kw): + def visit_TSVECTOR(self, type_, **kw): return "TSVECTOR" def visit_INET(self, type_, **kw): @@ -3087,9 +3091,21 @@ class PGDialect(default.DefaultDialect): for conname, condef, conschema in c.fetchall(): m = re.search(FK_REGEX, condef).groups() - constrained_columns, referred_schema, referred_table, referred_columns, _, match, _, onupdate, _, ondelete, deferrable, _, initially = ( - m - ) + ( + constrained_columns, + referred_schema, + referred_table, + referred_columns, + _, + match, + _, + onupdate, + _, + ondelete, + deferrable, + _, + initially, + ) = m if deferrable is not None: deferrable = True if deferrable == "DEFERRABLE" else False diff --git a/lib/sqlalchemy/dialects/postgresql/dml.py b/lib/sqlalchemy/dialects/postgresql/dml.py index 825f13238..9698e36ba 100644 --- a/lib/sqlalchemy/dialects/postgresql/dml.py +++ b/lib/sqlalchemy/dialects/postgresql/dml.py @@ -5,14 +5,15 @@ # This module is part of SQLAlchemy and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php -from ...sql.elements import ClauseElement, _literal_as_binds +from . import ext +from ... import util +from ...sql import schema +from ...sql.base import _generative from ...sql.dml import Insert as StandardInsert +from ...sql.elements import ClauseElement from ...sql.expression import alias -from ...sql import schema from ...util.langhelpers import public_factory -from ...sql.base import _generative -from ... import util -from . import ext + __all__ = ("Insert", "insert") @@ -51,7 +52,7 @@ class Insert(StandardInsert): set_=None, where=None, ): - """ + r""" Specifies a DO UPDATE SET action for ON CONFLICT clause. Either the ``constraint`` or ``index_elements`` argument is @@ -70,7 +71,7 @@ class Insert(StandardInsert): Additional WHERE criterion that can be used to infer a conditional target index. - :param set_: + :param set\_: Required argument. A dictionary or other mapping object with column names as keys and expressions or literals as values, specifying the ``SET`` actions to take. diff --git a/lib/sqlalchemy/dialects/postgresql/ext.py b/lib/sqlalchemy/dialects/postgresql/ext.py index da0c6250c..7f97d6e32 100644 --- a/lib/sqlalchemy/dialects/postgresql/ext.py +++ b/lib/sqlalchemy/dialects/postgresql/ext.py @@ -5,11 +5,11 @@ # This module is part of SQLAlchemy and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php -from ...sql import expression +from .array import ARRAY from ...sql import elements +from ...sql import expression from ...sql import functions from ...sql.schema import ColumnCollectionConstraint -from .array import ARRAY class aggregate_order_by(expression.ColumnElement): @@ -83,9 +83,9 @@ class ExcludeConstraint(ColumnCollectionConstraint): Defines an EXCLUDE constraint as described in the `postgres documentation`__. - __ http://www.postgresql.org/docs/9.0/\ -static/sql-createtable.html#SQL-CREATETABLE-EXCLUDE - """ + __ http://www.postgresql.org/docs/9.0/static/sql-createtable.html#SQL-CREATETABLE-EXCLUDE + + """ # noqa __visit_name__ = "exclude_constraint" diff --git a/lib/sqlalchemy/dialects/postgresql/hstore.py b/lib/sqlalchemy/dialects/postgresql/hstore.py index e4bac692a..b1511acd4 100644 --- a/lib/sqlalchemy/dialects/postgresql/hstore.py +++ b/lib/sqlalchemy/dialects/postgresql/hstore.py @@ -7,12 +7,13 @@ import re -from .base import ischema_names from .array import ARRAY +from .base import ischema_names from ... import types as sqltypes +from ... import util from ...sql import functions as sqlfunc from ...sql import operators -from ... import util + __all__ = ("HSTORE", "hstore") diff --git a/lib/sqlalchemy/dialects/postgresql/json.py b/lib/sqlalchemy/dialects/postgresql/json.py index f9421de37..1ac040abc 100644 --- a/lib/sqlalchemy/dialects/postgresql/json.py +++ b/lib/sqlalchemy/dialects/postgresql/json.py @@ -6,11 +6,12 @@ # the MIT License: http://www.opensource.org/licenses/mit-license.php from __future__ import absolute_import -from .base import ischema_names, colspecs +from .base import colspecs +from .base import ischema_names from ... import types as sqltypes -from ...sql import operators -from ...sql import elements from ... import util +from ...sql import operators + __all__ = ("JSON", "JSONB") @@ -133,8 +134,7 @@ class JSON(sqltypes.JSON): * Path index operations returning text (the ``#>>`` operator):: - data_table.c.data[('key_1', 'key_2', 5, ..., 'key_n')].astext == \ -'some value' + data_table.c.data[('key_1', 'key_2', 5, ..., 'key_n')].astext == 'some value' .. versionchanged:: 1.1 The :meth:`.ColumnElement.cast` operator on JSON objects now requires that the :attr:`.JSON.Comparator.astext` @@ -164,7 +164,7 @@ class JSON(sqltypes.JSON): :class:`.JSONB` - """ + """ # noqa astext_type = sqltypes.Text() diff --git a/lib/sqlalchemy/dialects/postgresql/pg8000.py b/lib/sqlalchemy/dialects/postgresql/pg8000.py index fef09e0eb..1eb24668b 100644 --- a/lib/sqlalchemy/dialects/postgresql/pg8000.py +++ b/lib/sqlalchemy/dialects/postgresql/pg8000.py @@ -4,13 +4,11 @@ # # This module is part of SQLAlchemy and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php - -""" +r""" .. dialect:: postgresql+pg8000 :name: pg8000 :dbapi: pg8000 - :connectstring: \ -postgresql+pg8000://user:password@host:port/dbname[?key=value&key=value...] + :connectstring: postgresql+pg8000://user:password@host:port/dbname[?key=value&key=value...] :url: https://pythonhosted.org/pg8000/ @@ -63,27 +61,28 @@ of the :ref:`psycopg2 <psycopg2_isolation_level>` dialect: :ref:`psycopg2_isolation_level` -""" -from ... import util, exc +""" # noqa import decimal +import re + +from .base import _DECIMAL_TYPES +from .base import _FLOAT_TYPES +from .base import _INT_TYPES +from .base import PGCompiler +from .base import PGDialect +from .base import PGExecutionContext +from .base import PGIdentifierPreparer +from .base import UUID +from .json import JSON +from ... import exc from ... import processors from ... import types as sqltypes -from .base import ( - PGDialect, - PGCompiler, - PGIdentifierPreparer, - PGExecutionContext, - _DECIMAL_TYPES, - _FLOAT_TYPES, - _INT_TYPES, - UUID, -) -import re -from sqlalchemy.dialects.postgresql.json import JSON +from ... import util from ...sql.elements import quoted_name + try: - from uuid import UUID as _python_UUID + from uuid import UUID as _python_UUID # noqa except ImportError: _python_UUID = None diff --git a/lib/sqlalchemy/dialects/postgresql/psycopg2.py b/lib/sqlalchemy/dialects/postgresql/psycopg2.py index 2c27c6919..30203d204 100644 --- a/lib/sqlalchemy/dialects/postgresql/psycopg2.py +++ b/lib/sqlalchemy/dialects/postgresql/psycopg2.py @@ -4,7 +4,6 @@ # # This module is part of SQLAlchemy and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php - r""" .. dialect:: postgresql+psycopg2 :name: psycopg2 @@ -77,12 +76,12 @@ in ``/tmp``, or whatever socket directory was specified when PostgreSQL was built. This value can be overridden by passing a pathname to psycopg2, using ``host`` as an additional keyword argument:: - create_engine("postgresql+psycopg2://user:password@/dbname?\ -host=/var/lib/postgresql") + create_engine("postgresql+psycopg2://user:password@/dbname?host=/var/lib/postgresql") .. seealso:: - `PQconnectdbParams <http://www.postgresql.org/docs/9.1/static/libpq-connect.html#LIBPQ-PQCONNECTDBPARAMS>`_ + `PQconnectdbParams \ + <http://www.postgresql.org/docs/9.1/static/libpq-connect.html#LIBPQ-PQCONNECTDBPARAMS>`_ .. _psycopg2_execution_options: @@ -93,13 +92,13 @@ The following DBAPI-specific options are respected when used with :meth:`.Connection.execution_options`, :meth:`.Executable.execution_options`, :meth:`.Query.execution_options`, in addition to those not specific to DBAPIs: -* ``isolation_level`` - Set the transaction isolation level for the lifespan of a - :class:`.Connection` (can only be set on a connection, not a statement +* ``isolation_level`` - Set the transaction isolation level for the lifespan + of a :class:`.Connection` (can only be set on a connection, not a statement or query). See :ref:`psycopg2_isolation_level`. -* ``stream_results`` - Enable or disable usage of psycopg2 server side cursors - - this feature makes use of "named" cursors in combination with special - result handling methods so that result rows are not fully buffered. +* ``stream_results`` - Enable or disable usage of psycopg2 server side + cursors - this feature makes use of "named" cursors in combination with + special result handling methods so that result rows are not fully buffered. If ``None`` or not set, the ``server_side_cursors`` option of the :class:`.Engine` is used. @@ -116,7 +115,8 @@ Psycopg2 Batch Mode (Fast Execution) ------------------------------------ Modern versions of psycopg2 include a feature known as -`Fast Execution Helpers <http://initd.org/psycopg/docs/extras.html#fast-execution-helpers>`_, +`Fast Execution Helpers \ +<http://initd.org/psycopg/docs/extras.html#fast-execution-helpers>`_, which have been shown in benchmarking to improve psycopg2's executemany() performance with INSERTS by multiple orders of magnitude. SQLAlchemy allows this extension to be used for all ``executemany()`` style calls @@ -176,10 +176,9 @@ now supported by libpq directly. This is enabled when ``client_encoding`` is passed directly to ``psycopg2.connect()``, and from SQLAlchemy is passed using the :paramref:`.create_engine.connect_args` parameter:: - # libpq direct parameter setting; - # only works for PostgreSQL **9.1 and above** - engine = create_engine("postgresql://user:pass@host/dbname", - connect_args={'client_encoding': 'utf8'}) + engine = create_engine( + "postgresql://user:pass@host/dbname", + connect_args={'client_encoding': 'utf8'}) # using the query string is equivalent engine = create_engine("postgresql://user:pass@host/dbname?client_encoding=utf8") @@ -294,8 +293,8 @@ The psycopg2 dialect supports these constants for isolation level: NOTICE logging --------------- -The psycopg2 dialect will log PostgreSQL NOTICE messages via the -``sqlalchemy.dialects.postgresql`` logger:: +The psycopg2 dialect will log PostgreSQL NOTICE messages +via the ``sqlalchemy.dialects.postgresql`` logger:: import logging logging.getLogger('sqlalchemy.dialects.postgresql').setLevel(logging.INFO) @@ -341,34 +340,34 @@ string format, on both the parameter side and the result side, will take place within SQLAlchemy's own marshalling logic, and not that of ``psycopg2`` which may be more performant. -""" +""" # noqa from __future__ import absolute_import -import re +import decimal import logging +import re -from ... import util, exc -import decimal +from .base import _DECIMAL_TYPES +from .base import _FLOAT_TYPES +from .base import _INT_TYPES +from .base import ENUM +from .base import PGCompiler +from .base import PGDialect +from .base import PGExecutionContext +from .base import PGIdentifierPreparer +from .base import UUID +from .hstore import HSTORE +from .json import JSON +from .json import JSONB +from ... import exc from ... import processors -from ...engine import result as _result -from ...sql import expression from ... import types as sqltypes -from .base import ( - PGDialect, - PGCompiler, - PGIdentifierPreparer, - PGExecutionContext, - ENUM, - _DECIMAL_TYPES, - _FLOAT_TYPES, - _INT_TYPES, - UUID, -) -from .hstore import HSTORE -from .json import JSON, JSONB +from ... import util +from ...engine import result as _result + try: - from uuid import UUID as _python_UUID + from uuid import UUID as _python_UUID # noqa except ImportError: _python_UUID = None @@ -448,7 +447,6 @@ class _PGJSONB(JSONB): class _PGUUID(UUID): def bind_processor(self, dialect): if not self.as_uuid and dialect.use_native_uuid: - nonetype = type(None) def process(value): if value is not None: diff --git a/lib/sqlalchemy/dialects/postgresql/psycopg2cffi.py b/lib/sqlalchemy/dialects/postgresql/psycopg2cffi.py index 7343bc973..c31527a44 100644 --- a/lib/sqlalchemy/dialects/postgresql/psycopg2cffi.py +++ b/lib/sqlalchemy/dialects/postgresql/psycopg2cffi.py @@ -4,13 +4,11 @@ # # This module is part of SQLAlchemy and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php -""" +r""" .. dialect:: postgresql+psycopg2cffi :name: psycopg2cffi :dbapi: psycopg2cffi - :connectstring: \ -postgresql+psycopg2cffi://user:password@host:port/dbname\ -[?key=value&key=value...] + :connectstring: postgresql+psycopg2cffi://user:password@host:port/dbname[?key=value&key=value...] :url: http://pypi.python.org/pypi/psycopg2cffi/ ``psycopg2cffi`` is an adaptation of ``psycopg2``, using CFFI for the C @@ -23,7 +21,7 @@ is as per ``psycopg2``. :mod:`sqlalchemy.dialects.postgresql.psycopg2` -""" +""" # noqa from .psycopg2 import PGDialect_psycopg2 diff --git a/lib/sqlalchemy/dialects/postgresql/pygresql.py b/lib/sqlalchemy/dialects/postgresql/pygresql.py index c7edb8fc3..13a3118b5 100644 --- a/lib/sqlalchemy/dialects/postgresql/pygresql.py +++ b/lib/sqlalchemy/dialects/postgresql/pygresql.py @@ -4,33 +4,33 @@ # # This module is part of SQLAlchemy and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php - """ .. dialect:: postgresql+pygresql :name: pygresql :dbapi: pgdb - :connectstring: postgresql+pygresql://user:password@host:port/dbname\ -[?key=value&key=value...] + :connectstring: postgresql+pygresql://user:password@host:port/dbname[?key=value&key=value...] :url: http://www.pygresql.org/ -""" +""" # noqa import decimal import re -from ... import exc, processors, util -from ...types import Numeric, JSON as Json -from ...sql.elements import Null -from .base import ( - PGDialect, - PGCompiler, - PGIdentifierPreparer, - _DECIMAL_TYPES, - _FLOAT_TYPES, - _INT_TYPES, - UUID, -) +from .base import _DECIMAL_TYPES +from .base import _FLOAT_TYPES +from .base import _INT_TYPES +from .base import PGCompiler +from .base import PGDialect +from .base import PGIdentifierPreparer +from .base import UUID from .hstore import HSTORE -from .json import JSON, JSONB +from .json import JSON +from .json import JSONB +from ... import exc +from ... import processors +from ... import util +from ...sql.elements import Null +from ...types import JSON as Json +from ...types import Numeric class _PGNumeric(Numeric): diff --git a/lib/sqlalchemy/dialects/postgresql/pypostgresql.py b/lib/sqlalchemy/dialects/postgresql/pypostgresql.py index 93bf653a4..398ac290d 100644 --- a/lib/sqlalchemy/dialects/postgresql/pypostgresql.py +++ b/lib/sqlalchemy/dialects/postgresql/pypostgresql.py @@ -4,21 +4,21 @@ # # This module is part of SQLAlchemy and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php - """ .. dialect:: postgresql+pypostgresql :name: py-postgresql :dbapi: pypostgresql - :connectstring: postgresql+pypostgresql://user:password@host:port/dbname\ -[?key=value&key=value...] + :connectstring: postgresql+pypostgresql://user:password@host:port/dbname[?key=value&key=value...] :url: http://python.projects.pgfoundry.org/ -""" -from ... import util -from ... import types as sqltypes -from .base import PGDialect, PGExecutionContext +""" # noqa + +from .base import PGDialect +from .base import PGExecutionContext from ... import processors +from ... import types as sqltypes +from ... import util class PGNumeric(sqltypes.Numeric): diff --git a/lib/sqlalchemy/dialects/postgresql/ranges.py b/lib/sqlalchemy/dialects/postgresql/ranges.py index 62d1275a6..9558f7c48 100644 --- a/lib/sqlalchemy/dialects/postgresql/ranges.py +++ b/lib/sqlalchemy/dialects/postgresql/ranges.py @@ -7,6 +7,7 @@ from .base import ischema_names from ... import types as sqltypes + __all__ = ("INT4RANGE", "INT8RANGE", "NUMRANGE") diff --git a/lib/sqlalchemy/dialects/postgresql/zxjdbc.py b/lib/sqlalchemy/dialects/postgresql/zxjdbc.py index 4d984443a..ab77e5bc8 100644 --- a/lib/sqlalchemy/dialects/postgresql/zxjdbc.py +++ b/lib/sqlalchemy/dialects/postgresql/zxjdbc.py @@ -14,8 +14,9 @@ """ +from .base import PGDialect +from .base import PGExecutionContext from ...connectors.zxJDBC import ZxJDBCConnector -from .base import PGDialect, PGExecutionContext class PGExecutionContext_zxjdbc(PGExecutionContext): |
