somehow you have the User class getting stuck in as a column  
somewhere...it is probably a subtle mistake in your syntax somewhere  
(and of course the lack of static typing in python :) )  I tried  
cutting and pasting all the code youve put here and it compiles  
fine...so youll have to create a more reproducible test case.


On Sep 16, 2006, at 8:18 PM, Mongoose wrote:

> I'm having trouble compiling my mappers. What I'm doing is a sort  
> of image board thingy, and trying to model it via sqlalchemy.  I'm  
> using postgresql.  My database is like this:
>
> (page down for the rest of my question)
>
> -------------------8<----------------------------------------------
> users = Table('users', metadata,
>         Column('id',Integer,primary_key=True),
>         Column('uname',String(16),unique=True),
>         Column('nym',String(32)),
>         Column('description',TEXT),
>         Column('interests', TEXT),
>         Column('password', Binary),
>         Column('link', TEXT),
>         Column('picture', TEXT),
>         Column('ContactInfo', TEXT),
>         Column('email',TEXT),
>         Column('PageSize',Integer,PassiveDefault('50')),
>         Column('visited',DateTime),
>         schema='identity'
> )
>
> posts = Table('posts',metadata,
>         Column('id',Integer,primary_key=True),
>         Column('parent',Integer,ForeignKey 
> ('chan.posts.id'),index=True),
>         Column('subject',String(128)),
>         Column('message',TEXT),
>         Column('created',DateTime),
>         Column('ChildAdded',DateTime),
>         Column('frozen',Boolean,PassiveDefault('0')),
>         Column('link',TEXT),
>         Column('image',PickleType),
>         Column('artist',TEXT),
>         Column('poster',Integer,ForeignKey 
> ('identity.users.id'),nullable=False),
>         schema='chan')
>
> channels = Table('channels',metadata,
>         Column('name',String(128),primary_key=True),
>         Column('top',Integer, ForeignKey('posts.id')),
>         Column('description',TEXT),
>         schema='chan')
>
> seen = Table('seen',metadata,
>         Column('uid',Integer,ForeignKey 
> ('identity.users.id'),primary_key=True),
>         Column('post',Integer,ForeignKey('chan.posts.id')),
>         schema='chan')
>
> blablah...create(...)
> -------------------8<----------------------------------------------
>
> It's an overcomplicated setup I admit, but the database seems to  
> swallow all that stuff pretty smoothly during creation.  The  
> problem comes when I try to do a simple mapping to one of the  
> types. It seems like an intermittent error that always seems to hit  
> one of the types. I can't detect any rhyme or reason, sadly.  What  
> I'll do is something like this:
>
> -------------------8<----------------------------------------------
> class User(object):
>       def _get_password(...):
>               ...
>               return self._password_hash
>       def set_password(...):
>               ...
>       password = property(_get_password,set_password
>
> ...
>
> table = Table('users',metadata,autoload=True,schema='identity')
> usermap = mapper(User,table,properties={
>       '_password_hash': table.c.password
> })
> table = Table('posts',metadata,...schema='chan')
> postmap = mapper(Post,...)
> etc...
> usermap.compile()
> -------------------8<----------------------------------------------
>
> At that point, everything goes all to Hell.  Not literally of  
> course.  I get errors like:
>   File "/usr/lib/python2.4/site-packages/sqlalchemy/sql.py", line  
> 712, in corresponding_column
>     for c in column.orig_set:
> AttributeError: type object 'User' has no attribute 'orig_set'
>
> or:
>   File "/usr/lib/python2.4/site-packages/sqlalchemy/sql.py", line  
> 712, in corresponding_column
>     for c in column.orig_set:
> AttributeError: type object 'Post' has no attribute 'orig_set'
>
> ...during that usermap.compile() stage.  Is there any reason that  
> User wouldn't be construed as a ColumnElement?  Is there any reason  
> the framework would mistakenly think User to be a ColumnElement  
> when it shouldn't?  Is there any reason those errors should come  
> up, then disappear, leaving other mysterious errors ("SQL Invalid  
> syntax, at FROM"???) to boggle my brain?
>
> The specific code for the mapping is...here:
> http://synx.us.to/code/fib/channel/handler.py
> Do a text search for the 'Mappers' class.  Each type has its own  
> @classmethod called 'mapper' which I then call so that I can  
> closely couple the properties={} clause with the class itself. So  
> respectively there are 4 functions that all call sqlalchemy.mapper  
> (or as I put it, db.mapper)
> 3 in here:
> http://synx.us.to/code/fib/channel/__init__.py
> And 1 in here:
> http://synx.us.to/code/fib/identity/user.py
> Again, do a text search for 'mapper' in those files to find the  
> mapper functions.
>
> Is there a problem with me using the cls variable in the  
> classmethod to map?  Would that mean a later query somewhere else  
> like session.query(user.User) would not work because it's not  
> 'cls'? Is it a problem if I pass the sqlalchemy module as an  
> argument, instead of importing it explicitly in each of the 4  
> files? Why would the compile() stage fail, in any case?
> -- 
> Mongoose
> jabber: http://synx.us.to/jabber.png
>
> ---------------------------------------------------------------------- 
> ---
> 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


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Sqlalchemy-users mailing list
Sqlalchemy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users

Reply via email to