Changeset 193 for trunk/module/pg.py


Ignore:
Timestamp:
Jan 8, 2005, 10:04:35 AM (15 years ago)
Author:
darcy
Message:

Fix the module so that it handles schemas correctly.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/module/pg.py

    r183 r193  
    11# pg.py
    22# Written by D'Arcy J.M. Cain
    3 # $Id: pg.py,v 1.27 2004-12-03 13:57:44 darcy Exp $
     3# $Id: pg.py,v 1.28 2005-01-08 15:04:35 darcy Exp $
    44
    55# This library implements some basic database management stuff.  It
     
    149149                        return self.__attnames[cl]
    150150
     151                # check for schema name
     152                if cl.find('.') == -1:
     153                        schema = 'public'
     154                        table = cl
     155                else:
     156                        try: schema, table = cl.split('.')
     157                        except ValueError, err:
     158                                raise ProgrammingError('Invalid class %s' % cl)
     159
    151160                query = """SELECT pg_attribute.attname, pg_type.typname
    152                                         FROM pg_class, pg_attribute, pg_type
     161                                        FROM pg_class, pg_attribute, pg_type, pg_namespace
    153162                                        WHERE pg_class.relname = '%s' AND
     163                                                pg_namespace.nspname = '%s' AND
    154164                                                pg_attribute.attnum > 0 AND
    155165                                                pg_attribute.attrelid = pg_class.oid AND
    156166                                                pg_attribute.atttypid = pg_type.oid AND
    157                                                 pg_attribute.attisdropped = 'f'"""
     167                                                pg_class.relnamespace = pg_namespace.oid AND
     168                                                pg_attribute.attisdropped = 'f'""" % (table, schema)
    158169
    159170                l = {}
    160                 for attname, typname in self.db.query(query % cl).getresult():
     171                for attname, typname in self.db.query(query).getresult():
    161172                        if re.match("^interval", typname):
    162173                                l[attname] = 'date'
Note: See TracChangeset for help on using the changeset viewer.