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.