summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/databases/postgres.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/databases/postgres.py')
-rw-r--r--lib/sqlalchemy/databases/postgres.py22
1 files changed, 17 insertions, 5 deletions
diff --git a/lib/sqlalchemy/databases/postgres.py b/lib/sqlalchemy/databases/postgres.py
index f2057b909..ce81cd7d6 100644
--- a/lib/sqlalchemy/databases/postgres.py
+++ b/lib/sqlalchemy/databases/postgres.py
@@ -67,6 +67,16 @@ colspecs = {
sqltypes.CHAR: PGChar,
}
+ischema_names = {
+ 'integer' : PGInteger,
+ 'character varying' : PGString,
+ 'character' : PGChar,
+ 'text' : PGText,
+ 'numeric' : PGNumeric,
+ 'timestamp without time zone' : PGDateTime,
+ 'bytea' : PGBinary,
+}
+
def engine(opts, **params):
return PGSQLEngine(opts, **params)
@@ -191,9 +201,10 @@ class PGSQLEngine(ansisql.ANSISQLEngine):
Column("column_name", String),
Column("constraint_name", String),
schema="information_schema")
-
- s = columns.select(columns.c.table_name==table.name,
- from_obj=[sql.join(columns, column_constraints,
+
+ s = columns.select(columns.c.table_name==table.name, order_by=[columns.c.ordinal_position])
+
+ s.append_from(sql.join(columns, column_constraints,
sql.and_(
columns.c.table_name==column_constraints.c.table_name,
columns.c.table_schema==column_constraints.c.table_schema,
@@ -204,9 +215,10 @@ class PGSQLEngine(ansisql.ANSISQLEngine):
column_constraints.c.table_schema==constraints.c.table_schema,
column_constraints.c.constraint_name==constraints.c.constraint_name,
constraints.c.constraint_type=='PRIMARY KEY'
- ), isouter=True)],
- order_by=[columns.c.ordinal_position])
+ ), isouter=True)),
+
s.append_column(constraints.c.constraint_type)
+
if table.schema is not None:
s.append_whereclause(columns.c.table_schema==table.schema)
else: