]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Add postgresql.MONEY
authorCleber J Santos <cleber@cleberjsantos.com.br>
Wed, 15 Nov 2017 23:09:23 +0000 (18:09 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 16 Nov 2017 14:27:58 +0000 (09:27 -0500)
Change-Id: I2b40faf583a84bc5b416e1ad3aa812896ea67a8c
Pull-request: https://github.com/zzzeek/sqlalchemy/pull/395

doc/build/changelog/unreleased_12/pr395.rst [new file with mode: 0644]
doc/build/dialects/postgresql.rst
lib/sqlalchemy/dialects/postgresql/__init__.py
lib/sqlalchemy/dialects/postgresql/base.py
test/dialect/postgresql/test_types.py

diff --git a/doc/build/changelog/unreleased_12/pr395.rst b/doc/build/changelog/unreleased_12/pr395.rst
new file mode 100644 (file)
index 0000000..dc71f89
--- /dev/null
@@ -0,0 +1,5 @@
+.. change::
+    :tags: feature, postgresql
+
+    Added new :class:`.postgresql.MONEY` datatype.  Pull request courtesy
+    Cleber J Santos.
\ No newline at end of file
index 35bf2e568adf915c3b75a56acde6b62fcc1c3a52..db5101badd6a3521544ef1c6ecbc2e39f4118f81 100644 (file)
@@ -15,7 +15,7 @@ they originate from :mod:`sqlalchemy.types` or from the local dialect::
     from sqlalchemy.dialects.postgresql import \
         ARRAY, BIGINT, BIT, BOOLEAN, BYTEA, CHAR, CIDR, DATE, \
         DOUBLE_PRECISION, ENUM, FLOAT, HSTORE, INET, INTEGER, \
-        INTERVAL, JSON, JSONB, MACADDR, NUMERIC, OID, REAL, SMALLINT, TEXT, \
+        INTERVAL, JSON, JSONB, MACADDR, MONEY, NUMERIC, OID, REAL, SMALLINT, TEXT, \
         TIME, TIMESTAMP, UUID, VARCHAR, INT4RANGE, INT8RANGE, NUMRANGE, \
         DATERANGE, TSRANGE, TSTZRANGE, TSVECTOR
 
@@ -79,6 +79,9 @@ construction arguments, are as follows:
 .. autoclass:: MACADDR
     :members: __init__
 
+.. autoclass:: MONEY
+    :members: __init__
+
 .. autoclass:: OID
     :members: __init__
 
index a6872cfb260fced677848b86f922e064bad18c60..c534b3457374914ec60d3d97e9ca8c857826f5f7 100644 (file)
@@ -12,7 +12,7 @@ base.dialect = psycopg2.dialect
 
 from .base import \
     INTEGER, BIGINT, SMALLINT, VARCHAR, CHAR, TEXT, NUMERIC, FLOAT, REAL, \
-    INET, CIDR, UUID, BIT, MACADDR, OID, DOUBLE_PRECISION, TIMESTAMP, TIME, \
+    INET, CIDR, UUID, BIT, MACADDR, MONEY, OID, DOUBLE_PRECISION, TIMESTAMP, TIME, \
     DATE, BYTEA, BOOLEAN, INTERVAL, ENUM, dialect, TSVECTOR, DropEnumType, \
     CreateEnumType
 from .hstore import HSTORE, hstore
@@ -26,7 +26,7 @@ from .ranges import INT4RANGE, INT8RANGE, NUMRANGE, DATERANGE, TSRANGE, \
 
 __all__ = (
     'INTEGER', 'BIGINT', 'SMALLINT', 'VARCHAR', 'CHAR', 'TEXT', 'NUMERIC',
-    'FLOAT', 'REAL', 'INET', 'CIDR', 'UUID', 'BIT', 'MACADDR', 'OID',
+    'FLOAT', 'REAL', 'INET', 'CIDR', 'UUID', 'BIT', 'MACADDR', 'MONEY', 'OID',
     'DOUBLE_PRECISION', 'TIMESTAMP', 'TIME', 'DATE', 'BYTEA', 'BOOLEAN',
     'INTERVAL', 'ARRAY', 'ENUM', 'dialect', 'array', 'HSTORE',
     'hstore', 'INT4RANGE', 'INT8RANGE', 'NUMRANGE', 'DATERANGE',
index 641c62a6a5e6ad4076477bb41b2cf07026223ed3..32de7861a0cb12c68f65300d85a97f7973ac6b29 100644 (file)
@@ -973,6 +973,16 @@ class MACADDR(sqltypes.TypeEngine):
 PGMacAddr = MACADDR
 
 
+class MONEY(sqltypes.TypeEngine):
+
+    """Provide the PostgreSQL MONEY type.
+
+    .. versionadded:: 1.2
+
+    """
+    __visit_name__ = "MONEY"
+
+
 class OID(sqltypes.TypeEngine):
 
     """Provide the PostgreSQL OID type.
@@ -1362,6 +1372,7 @@ ischema_names = {
     'bit': BIT,
     'bit varying': BIT,
     'macaddr': MACADDR,
+    'money': MONEY,
     'oid': OID,
     'double precision': DOUBLE_PRECISION,
     'timestamp': TIMESTAMP,
@@ -1831,6 +1842,9 @@ class PGTypeCompiler(compiler.GenericTypeCompiler):
     def visit_MACADDR(self, type_, **kw):
         return "MACADDR"
 
+    def visit_MONEY(self, type_, **kw):
+        return "MONEY"
+
     def visit_OID(self, type_, **kw):
         return "OID"
 
index 499217fddd8d8cc9c0769c4ad4f307fad3a6423c..dea17bc2a9bb3e744492e4d291b9aaa68d887f3f 100644 (file)
@@ -1650,6 +1650,7 @@ class SpecialTypesTest(fixtures.TestBase, ComparesTables, AssertsCompiledSQL):
                 'bitstring', postgresql.BIT(4)),
             Column('addr', postgresql.INET),
             Column('addr2', postgresql.MACADDR),
+            Column('price', postgresql.MONEY),
             Column('addr3', postgresql.CIDR),
             Column('doubleprec', postgresql.DOUBLE_PRECISION),
             Column('plain_interval', postgresql.INTERVAL),