summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/databases/postgres.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2005-10-30 03:03:30 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2005-10-30 03:03:30 +0000
commit78c795c1a41ef2d8c9617507c3dd37403e4b2f0e (patch)
tree060fee0190e27d89abcd5917187a5cb74246a17c /lib/sqlalchemy/databases/postgres.py
parent70580de8bd51834e39712c09fadb64ac8559ae65 (diff)
downloadsqlalchemy-78c795c1a41ef2d8c9617507c3dd37403e4b2f0e.tar.gz
Diffstat (limited to 'lib/sqlalchemy/databases/postgres.py')
-rw-r--r--lib/sqlalchemy/databases/postgres.py27
1 files changed, 19 insertions, 8 deletions
diff --git a/lib/sqlalchemy/databases/postgres.py b/lib/sqlalchemy/databases/postgres.py
index ed98fedc4..36cb421d5 100644
--- a/lib/sqlalchemy/databases/postgres.py
+++ b/lib/sqlalchemy/databases/postgres.py
@@ -85,6 +85,9 @@ gen_columns = schema.Table("columns", generic_engine,
Column("is_nullable", Integer),
Column("data_type", String),
Column("ordinal_position", Integer),
+ Column("character_maximum_length", Integer),
+ Column("numeric_precision", Integer),
+ Column("numeric_precision_radix", Integer),
schema="information_schema")
gen_constraints = schema.Table("table_constraints", generic_engine,
@@ -208,24 +211,24 @@ class PGSQLEngine(ansisql.ANSISQLEngine):
s = select([columns, constraints.c.constraint_type],
columns.c.table_name==table.name,
- order_by=[columns.c.ordinal_position],
- from_obj=[sql.join(columns, column_constraints,
+ order_by=[columns.c.ordinal_position])
+
+ s.append_from(sql.outerjoin(columns, column_constraints,
sql.and_(
columns.c.table_name==column_constraints.c.table_name,
columns.c.table_schema==column_constraints.c.table_schema,
columns.c.column_name==column_constraints.c.column_name,
- ),
- isouter=True).join(constraints,
+ )).outerjoin(constraints,
sql.and_(
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)])
+ )))
if table.schema is not None:
s.append_whereclause(columns.c.table_schema==table.schema)
else:
- current_schema = text("select current_schema()", table.engine).execute().fetchone()[0]
+ current_schema = text("select current_schema()", table.engine).scalar()
s.append_whereclause(columns.c.table_schema==current_schema)
c = s.execute()
@@ -233,8 +236,16 @@ class PGSQLEngine(ansisql.ANSISQLEngine):
row = c.fetchone()
if row is None:
break
- print "row! " + repr(row)
- (name, type, nullable, primary_key) = (row[columns.c.column_name], row[columns.c.data_type], not row[columns.c.is_nullable], row[constraints.c.constraint_type] is not None)
+ #print "row! " + repr(row)
+ (name, type, nullable, primary_key, charlen, numericprec, numericradix) = (
+ row[columns.c.column_name],
+ row[columns.c.data_type],
+ not row[columns.c.is_nullable],
+ row[constraints.c.constraint_type] is not None,
+ row[columns.c.character_maximum_length],
+ row[columns.c.numeric_precision],
+ row[columns.c.numeric_precision_radix],
+ )
#match = re.match(r'(\w+)(\(.*?\))?', type)
#coltype = match.group(1)