Hi Michael,

Thanks for you reply. I think I've found out what is the problem, but
still not sure why this is happening. This has something to do with
the attribute last_con of type Date() from PSTN table. When I removed
the attribute from my pstn table, the code worked perfectly fine as
desired.

When I add the date through my forms, it works fine. But when I add
the date from sql prompt, this gives me the error. I'm still trying to
figure out why this is happening.

On Feb 9, 2:52 pm, Michael Bayer <mike...@zzzcomputing.com> wrote:
> It seems like your issue is that a query is executing and you are expecting a 
> certain result, but you are not getting it.   So there's not a lot of 
> relevant detail here for someone that doesn't have your application open in 
> front of them (test data, exact code that produces query, illustration of 
> expected result row not present, extraneous stack traces regarding pagination 
> logic and secondary side effects like '"NoneType" has no attribute "groups"'  
> removed).   So on your end, turn on echo ='debug', ensure the expected rows 
> are returned from the statement as it executes, and keep in mind an ORM query 
> against a single entity, i.e. session.query(Source).filter(...), will only 
> return a Source object if a primary key for Source is fully present in the 
> row.
>
> On Feb 9, 2011, at 5:21 AM, dalia wrote:
>
> > 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 sqlalchemy@googlegroups.com.
> > To unsubscribe from this group, send email to 
> > sqlalchemy+unsubscr...@googlegroups.com.
> > For more options, visit this group 
> > athttp://groups.google.com/group/sqlalchemy?hl=en.

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

Reply via email to