From: Mike Bayer Date: Sat, 29 Oct 2005 19:24:15 +0000 (+0000) Subject: (no commit message) X-Git-Tag: rel_0_1_0~418 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=90a886cc9073138324797525821e25e82d06915e;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git --- diff --git a/lib/sqlalchemy/databases/postgres.py b/lib/sqlalchemy/databases/postgres.py index f2057b9098..ce81cd7d67 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: diff --git a/lib/sqlalchemy/sql.py b/lib/sqlalchemy/sql.py index 039e3cd768..2cb7d17bab 100644 --- a/lib/sqlalchemy/sql.py +++ b/lib/sqlalchemy/sql.py @@ -768,6 +768,8 @@ class Select(Selectable): for r in fromclause._get_from_objects(): self.froms[r.id] = r + def append_join(self, joinon, right, whereclause, **params): + self.append_from(self.froms[joinon], right, whereclause, **params) def append_clause(self, keyword, clause): if type(clause) == str: diff --git a/test/engines.py b/test/engines.py index 2d7651050a..291cafabd6 100644 --- a/test/engines.py +++ b/test/engines.py @@ -54,7 +54,7 @@ class EngineTest(PersistTest): # clear out table registry db.tables.clear() -# users = Table('users', db, autoload = True) + users = Table('users', db, autoload = True) addresses = Table('email_addresses', db, autoload = True) users.drop()