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
Sqlalchemy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users

Reply via email to