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
-~--~~~~--~~--~--~---