diff options
Diffstat (limited to 'lib/sqlalchemy/dialects/postgresql/base.py')
-rw-r--r-- | lib/sqlalchemy/dialects/postgresql/base.py | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py index ceefc20b0..b30e77704 100644 --- a/lib/sqlalchemy/dialects/postgresql/base.py +++ b/lib/sqlalchemy/dialects/postgresql/base.py @@ -1887,7 +1887,9 @@ class PGDDLCompiler(compiler.DDLCompiler): colspec += " SERIAL" else: colspec += " " + self.dialect.type_compiler.process( - column.type, type_expression=column + column.type, + type_expression=column, + identifier_preparer=self.preparer, ) default = self.get_column_default_string(column) if default is not None: @@ -2149,8 +2151,11 @@ class PGTypeCompiler(compiler.GenericTypeCompiler): else: return self.visit_ENUM(type_, **kw) - def visit_ENUM(self, type_, **kw): - return self.dialect.identifier_preparer.format_type(type_) + def visit_ENUM(self, type_, identifier_preparer=None, **kw): + if identifier_preparer is None: + identifier_preparer = self.dialect.identifier_preparer + + return identifier_preparer.format_type(type_) def visit_TIMESTAMP(self, type_, **kw): return "TIMESTAMP%s %s" % ( @@ -2240,9 +2245,6 @@ class PGIdentifierPreparer(compiler.IdentifierPreparer): class PGInspector(reflection.Inspector): - def __init__(self, conn): - reflection.Inspector.__init__(self, conn) - def get_table_oid(self, table_name, schema=None): """Return the OID for the given table name.""" @@ -3536,18 +3538,18 @@ class PGDialect(default.DefaultDialect): enums = [] enum_by_name = {} for enum in c.fetchall(): - key = (enum["schema"], enum["name"]) + key = (enum.schema, enum.name) if key in enum_by_name: - enum_by_name[key]["labels"].append(enum["label"]) + enum_by_name[key]["labels"].append(enum.label) else: enum_by_name[key] = enum_rec = { - "name": enum["name"], - "schema": enum["schema"], - "visible": enum["visible"], + "name": enum.name, + "schema": enum.schema, + "visible": enum.visible, "labels": [], } - if enum["label"] is not None: - enum_rec["labels"].append(enum["label"]) + if enum.label is not None: + enum_rec["labels"].append(enum.label) enums.append(enum_rec) return enums @@ -3566,10 +3568,11 @@ class PGDialect(default.DefaultDialect): """ s = sql.text(SQL_DOMAINS).columns(attname=sqltypes.Unicode) - c = connection.execute(s) + c = connection.execution_options(future_result=True).execute(s) domains = {} - for domain in c.fetchall(): + for domain in c.mappings(): + domain = domain # strip (30) from character varying(30) attype = re.search(r"([^\(]+)", domain["attype"]).group(1) # 'visible' just means whether or not the domain is in a |