On 22 Jun 2006 at 23:44, Michael Bayer wrote:
> a lot has changed with mapper initialization (and plenty of
> bugs....), but not tables. can you send a test example ?
Sorry my example was not clear. the variable is called 'table' in my module,
but it
is a mapper.
from P2P.database.dbtables.py:
---
from sqlalchemy import *
from sqlalchemy.mods.threadlocal import *
from sqlalchemy.schema import default_metadata
metadata = default_metadata
# table Tregion
# Table of regions
Tregion = Table('region', metadata,
Column('id',
Integer,
primary_key=True,
nullable=False,
),
Column('name',
String(32),
nullable=False,
),
)
class region(object):
pass
assign_mapper(region, Tregion)
--
Later, a connection is established via firebird connection.. Then this
(table_name
= 'region'):
table = table_name and getattr(dbtables, table_name, None) or None
if not table:
return httpexceptions.HTTPBadRequest(detail="Invalid tablename %r"
%
table_name)(environ, start_response)
print "table is %r" % table
print "table.c is %r" % table.c
print "table.c keys %r" % table.c.keys()
The output is:
[2006-06-23 15:12:50,398] [pool] : Connection <kinterbasdb.Connection object
at
0x0166CE70> checked out from pool
[2006-06-23 15:12:50,398] [engine]: BEGIN
table is <class 'P2P.database.dbtables.region'>
table.c is <sqlalchemy.orm.mapper.LOrderedProp object at 0x014D4BB0>
table.c keys []
[2006-06-23 15:12:50,398] [engine]: ROLLBACK
(rollback because of exception)
File
'E:\\prj\\src\\eclipse\\parent_to_parent\\Web\\p2pserver\\p2pserver\\dbaccess.py',
line 70 in __call__
args.append(table.c[k] == v)
File 'e:\\prj\\src\\sqlalchemy\\lib\\sqlalchemy\\util.py', line 114 in
__getitem__
return self.__data[key]
File 'e:\\prj\\src\\sqlalchemy\\lib\\sqlalchemy\\util.py', line 174 in
__getitem__
return dict.__getitem__(self, key)
exceptions.KeyError: 'id'
Now I do a new web request, again:
table is <class 'P2P.database.dbtables.region'>
table.c is <sqlalchemy.orm.mapper.LOrderedProp object at 0x014D4BB0>
table.c keys []
But I take a different path and just do:
table.select() (that works and returns all rows)
And then retry the first request:
[2006-06-23 15:19:44,111] [engine]: BEGIN
table is <class 'P2P.database.dbtables.region'>
table.c is <sqlalchemy.orm.mapper.LOrderedProp object at 0x014D4BB0>
table.c keys ['id', 'name']
So it seems that LOrderdedProp is not being initialized when table.c.keys() is
accessed, or when table.c['something'] is accessed.
--
Brad Clements, [EMAIL PROTECTED] (315)268-1000
http://www.murkworks.com
AOL-IM or SKYPE: BKClements
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Sqlalchemy-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users