diff options
| author | Sebastian Bank <sebastian.bank@uni-leipzig.de> | 2018-04-02 11:25:08 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2018-04-03 09:31:07 -0400 |
| commit | 9f986ce10c6755af3f347a56f9ea03e0e2c5943e (patch) | |
| tree | 071fbf196fa0a0bbd1af23630e737a35448a0fe4 /lib/sqlalchemy | |
| parent | 55371f4cffa730f65f1b687e9f6287d2ac189227 (diff) | |
| download | sqlalchemy-9f986ce10c6755af3f347a56f9ea03e0e2c5943e.tar.gz | |
Add postgresl.REGCLASS type for casting table names to OIDs and vice versa
Fixes: #4160
Change-Id: Id0bdbad1be3a0950dc8f35895ee13d9264244722
Pull-request: https://github.com/zzzeek/sqlalchemy/pull/435
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/dialects/postgresql/__init__.py | 6 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/postgresql/base.py | 14 |
2 files changed, 17 insertions, 3 deletions
diff --git a/lib/sqlalchemy/dialects/postgresql/__init__.py b/lib/sqlalchemy/dialects/postgresql/__init__.py index a985f06a9..d2f8057b6 100644 --- a/lib/sqlalchemy/dialects/postgresql/__init__.py +++ b/lib/sqlalchemy/dialects/postgresql/__init__.py @@ -10,7 +10,7 @@ from . import base, psycopg2, pg8000, pypostgresql, pygresql, \ from .base import \ INTEGER, BIGINT, SMALLINT, VARCHAR, CHAR, TEXT, NUMERIC, FLOAT, REAL, \ - INET, CIDR, UUID, BIT, MACADDR, MONEY, OID, DOUBLE_PRECISION, \ + 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 @@ -28,8 +28,8 @@ base.dialect = dialect = psycopg2.dialect __all__ = ( 'INTEGER', 'BIGINT', 'SMALLINT', 'VARCHAR', 'CHAR', 'TEXT', 'NUMERIC', 'FLOAT', 'REAL', 'INET', 'CIDR', 'UUID', 'BIT', 'MACADDR', 'MONEY', 'OID', - 'DOUBLE_PRECISION', 'TIMESTAMP', 'TIME', 'DATE', 'BYTEA', 'BOOLEAN', - 'INTERVAL', 'ARRAY', 'ENUM', 'dialect', 'array', 'HSTORE', + 'REGCLASS', 'DOUBLE_PRECISION', 'TIMESTAMP', 'TIME', 'DATE', 'BYTEA', + 'BOOLEAN', 'INTERVAL', 'ARRAY', 'ENUM', 'dialect', 'array', 'HSTORE', 'hstore', 'INT4RANGE', 'INT8RANGE', 'NUMRANGE', 'DATERANGE', 'TSRANGE', 'TSTZRANGE', 'json', 'JSON', 'JSONB', 'Any', 'All', 'DropEnumType', 'CreateEnumType', 'ExcludeConstraint', diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py index 1dffe8db9..c5b0db6ce 100644 --- a/lib/sqlalchemy/dialects/postgresql/base.py +++ b/lib/sqlalchemy/dialects/postgresql/base.py @@ -1000,6 +1000,16 @@ class OID(sqltypes.TypeEngine): __visit_name__ = "OID" +class REGCLASS(sqltypes.TypeEngine): + + """Provide the PostgreSQL REGCLASS type. + + .. versionadded:: 1.2.7 + + """ + __visit_name__ = "REGCLASS" + + class TIMESTAMP(sqltypes.TIMESTAMP): def __init__(self, timezone=False, precision=None): @@ -1382,6 +1392,7 @@ ischema_names = { 'macaddr': MACADDR, 'money': MONEY, 'oid': OID, + 'regclass': REGCLASS, 'double precision': DOUBLE_PRECISION, 'timestamp': TIMESTAMP, 'timestamp with time zone': TIMESTAMP, @@ -1876,6 +1887,9 @@ class PGTypeCompiler(compiler.GenericTypeCompiler): def visit_OID(self, type_, **kw): return "OID" + def visit_REGCLASS(self, type_, **kw): + return "REGCLASS" + def visit_FLOAT(self, type_, **kw): if not type_.precision: return "FLOAT" |
