Hi,

I'm very new to sql alchemy..want help in debugging my code. I'm
writing a web application using pylons, formalchemy and sqlalchemy.
The issue is as follows -

I've 2 tables namely source and pstn. i've declared them as follows -

class Source(Base):
    __tablename__ = 'source'
    id = Column(Integer, primary_key=True)
    sh_code = Column(Integer, nullable=False)
    pstn_no = Column(Integer)
    details = Column(Text(), nullable=False)
    active = Column(Boolean, default=True)

class PSTN(Base):
    __tablename__ = 'pstn'
    id = Column(Integer, primary_key=True)
    prev_no = Column(Integer)
    latest_no = Column(Integer, nullable=False)
    last_con = Column(Date())
    expiry_code = Column(Text())
    active = Column(Boolean, default=True)

now i've joined the two tables to create a view namely History like
this -

pstn_table = PSTN.__table__
source_table = Source.__table__

j = join(pstn_table, source_table, pstn_table.c.latest_no ==
source_table.c.pstn_no)

class History(Base):
    __table__ = j

in my admincontroller, i've set up the code so that whenever a new
entry is added to 'source', the same 'pstn_no' would be inserted to
'pstn' table's 'latest_no' column. This piece is working fine and
whenever i try to access class History from the grid, it loads all
fine. The underlying sql query for the join is like this -

 SELECT pstn.id AS pstn_id, source.id AS source_id, pstn.prev_no AS
pstn_prev_no, pstn.latest_no AS pstn_latest_no, pstn.last_con AS
pstn_last_con, pstn.expiry_code AS pstn_expiry_code, pstn.active AS
pstn_active, source.active AS source_active, source.sh_code AS
source_sh_code, source.pstn_no AS source_pstn_no, source.details AS
source_details
FROM pstn JOIN source ON pstn.latest_no = source.pstn_no
WHERE pstn.active = ?
 LIMIT 3 OFFSET 0
10:05:13,089 INFO  [sqlalchemy.engine.base.Engine.0x...f490] (True,)

Now, the problem is, if I manually add some entry into the 'pstn' and
'source' table where source.pstn_no = pstn.latest_no and try to access
the History grid, the underlying sql remains the same but on the
webpage, i get this error -

⇝ AttributeError: 'NoneType' object has no attribute 'groups'
View as:   Interactive (full)  |  Text (full)  |  XML (full)
clear this
clear this
Module testapp.lib.admincontroller:292 in index         view
<<      def index(self, format='html', **kwargs):
               """REST api"""
               page = self.get_page()
               fs = self.get_grid()
               fs = fs.bind(instances=page)
>>  page = self.get_page()
Module testapp.controllers.admin:45 in get_page         view
<<        options = dict(page=int(request.params.get('page', '1')))
             return Page(query,options)

           def hide(self, id):
>>  return Page(query,options)
Module webhelpers.paginate:434 in __init__         view
<<                  self.items = self.collection
                   else:
                       self.items =
list(self.collection[self.first_item-1:self.last_item])

                   # Links to previous and next page
>>  self.items = list(self.collection[self.first_item-1:self.last_item])
Module webhelpers.paginate:263 in __getitem__         view
<<          if not isinstance(range, slice):
                   raise Exception, "__getitem__ without slicing not
supported"
               return self.obj[range]

           def __len__(self):
>>  return self.obj[range]
Module sqlalchemy.orm.query:1528 in __getitem__         view
<<                  return list(res)[None:None:item.step]
                   else:
                       return list(res)
               else:
                   return list(self[item:item+1])[0]
>>  return list(res)
Module sqlalchemy.orm.query:1797 in instances         view
<<                      process[0](row, rows)
                   elif single_entity:
                       rows = [process[0](row, None) for row in fetch]
                   else:
                       rows = [util.NamedTuple([proc(row, None) for
proc in process],
>>  rows = [process[0](row, None) for row in fetch]
Module sqlalchemy.orm.mapper:2275 in _instance         view
<<                              instancekey=identitykey, isnew=isnew)
is \
                                   EXT_CONTINUE:
                           populate_state(state, dict_, row, isnew,
only_load_props)

                   else:
>>  populate_state(state, dict_, row, isnew, only_load_props)
Module sqlalchemy.orm.mapper:2153 in populate_state         view
<<              for key, populator in populators:
                       populator(state, dict_, row)

               session_identity_map = context.session.identity_map
>>  populator(state, dict_, row)
Module sqlalchemy.orm.strategies:129 in new_execute         view
<<              if col is not None and col in row:
                       def new_execute(state, dict_, row):
                           dict_[key] = row[col]
                       return new_execute, None, None
               else:
>>  dict_[key] = row[col]
Module sqlalchemy.engine.base:2023 in __getitem__         view
<<                          "try 'use_labels' option on select
statement." % key)
                   if processor is not None:
                       return processor(self._row[index])
                   else:
                       return self._row[index]
>>  return processor(self._row[index])
Module sqlalchemy.processors:26 in process         view
<<              return None
               else:
                   return type_(*map(int, rmatch(value).groups(0)))
           return process
>>  return type_(*map(int, rmatch(value).groups(0)))
AttributeError: 'NoneType' object has no attribute 'groups'

when i run the same sql query into my database, it returns me desired
rows and all works fine. It's just that when i try to access the
joined view grid from the webpage, this error shows up...any help???

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to