OK, i made it into a straight down program (attached) and it  
completes fine.



--~--~---------~--~----~------------~-------~--~----~
 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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---
from datetime import datetime
import sqlalchemy as sa
from sqlalchemy.ext.sessioncontext import SessionContext

metadata = sa.BoundMetaData('sqlite:///:memory:')
metadata.engine.echo = True

ctx = SessionContext(sa.create_session)

groups_table = sa.Table('tg_group', metadata,
    sa.Column('group_id', sa.Integer, primary_key=True),
    sa.Column('group_name', sa.Unicode(16), unique=True),
    sa.Column('display_name', sa.Unicode(255)),
    sa.Column('created', sa.DateTime, default=datetime.now)
)

users_table = sa.Table('tg_user', metadata,
    sa.Column('user_id', sa.Integer, primary_key=True),
    sa.Column('user_name', sa.Unicode(16), unique=True),
    sa.Column('email_address', sa.Unicode(255), unique=True),
    sa.Column('display_name', sa.Unicode(255)),
    sa.Column('password', sa.Unicode(40)),
    sa.Column('created', sa.DateTime, default=datetime.now)
)

user_group_table = sa.Table('user_group', metadata,
    sa.Column('user_id', sa.Integer, sa.ForeignKey('tg_user.user_id')),
    sa.Column('group_id', sa.Integer, sa.ForeignKey('tg_group.group_id'))
)

class User(object):
    
    def __repr__(self):
        return "class User user_id=%s email_address=%s display_name=%s" % (
                self.user_id, self.email_address, self.display_name)
    
class Group(object):
    pass
    
gmapper = sa.mapper(Group, groups_table)
umapper = sa.mapper(User, users_table, properties=dict(
    groups = sa.relation(Group, secondary=user_group_table, backref='users')
    )
)

    
def sa_create(class_, **kw):
    try:
        obj = class_(**kw)
    except TypeError:
        obj = class_()
    sa_update(obj, **kw) # update takes care of save/flush
    return obj

def sa_update(obj, **kw):
    [setattr(obj, key, value) for key, value in kw.iteritems()]
    push_to_db(obj)

def push_to_db(obj):
    had_session = True
    session = sa.orm.session.object_session(obj)
    if not session:
        print "Didn't find session"
        session = ctx.current
        had_session = False
    session.save(obj)
    session.flush((obj,))
    if not had_session:
        session.expunge(obj)
        
ctx.current.clear()
session = ctx.current
# Create tables
metadata.drop_all()
metadata.create_all()
user1 = User() 
user1.user_name='bobvilla'
user1.email_address='[EMAIL PROTECTED]'
user1.display_name='Bob Villa'
user1.password='toughasnails'   
session.save(user1)
u2 = User()
u2.user_name='bobathome'
u2.email_address='[EMAIL PROTECTED]'
u2.display_name='Bob Villa'
u2.password='hammertime'
session.save(u2) 
session.flush()
print 'UuUuUuU %s' % user1
user1 = user1
session.clear()


session = ctx.current
u1 = session.query(User).select(User.c.user_name=='bobvilla')
l = session.query(User).select()
print u1
for u in l:
    print u
assert u1[0].user_id==user1.user_id
assert u1[0].email_address=='[EMAIL PROTECTED]'
assert len(l) == 2

u = sa_create(User, user_name='bobevans', 
           email_address='[EMAIL PROTECTED]', 
           display_name='Bob Evans',
           password='secretsauce')
assert u.user_name=='bobevans'
assert u.user_id > 0




On Jan 11, 2007, at 8:36 PM, Patrick Lewis wrote:

>
>
> Michael Bayer wrote:
>> you need to attach a test case that doenst have all the "generalorm"
>> dependencies.  also, i looked at this and i dont see why the
>> ruledispatch stuff cant be factored out of the test as well since
>> none of those functions seem to be called.
>
> Sorry about that.  I thought I had removed all of those, but obviously
> not. Here is a one file test. I've also stripped out the dispatch
> rules, but left the essential logic.
>
> http://paste.turbogears.org/paste/831
>
> As i mentioned before, the test_setup case passes when run by itself,
> but not in combination with the test_create test. test_create always
> seems to pass.
>
>
> --~--~---------~--~----~------------~-------~--~----~
>  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- 
> [EMAIL PROTECTED]
> For more options, visit this group at http://groups.google.com/ 
> group/sqlalchemy?hl=en
> -~----------~----~----~----~------~----~------~--~---
>

Reply via email to