- fixed bug in query.instances() that wouldnt handle more than

on additional mapper or one additional column.
This commit is contained in:
Mike Bayer
2007-05-20 16:40:21 +00:00
parent 9102d678ab
commit 555ab611f1
3 changed files with 29 additions and 9 deletions
+2
View File
@@ -20,6 +20,8 @@
- removed "no group by's in a select thats part of a UNION"
restriction [ticket:578]
- orm
- fixed bug in query.instances() that wouldnt handle more than
on additional mapper or one additional column.
- "delete-orphan" no longer implies "delete". ongoing effort to
separate the behavior of these two operations.
- many-to-many relationships properly set the type of bind params
+13 -9
View File
@@ -882,16 +882,20 @@ class Query(object):
if isinstance(m, type):
m = mapper.class_mapper(m)
if isinstance(m, mapper.Mapper):
appender = []
def proc(context, row):
if not m._instance(context, row, appender):
appender.append(None)
process.append((proc, appender))
def x(m):
appender = []
def proc(context, row):
if not m._instance(context, row, appender):
appender.append(None)
process.append((proc, appender))
x(m)
elif isinstance(m, sql.ColumnElement) or isinstance(m, basestring):
res = []
def proc(context, row):
res.append(row[m])
process.append((proc, res))
def y(m):
res = []
def proc(context, row):
res.append(row[m])
process.append((proc, res))
y(m)
result = []
else:
result = util.UniqueAppender([])
+14
View File
@@ -1619,6 +1619,20 @@ class InstancesTest(MapperSuperTest):
(user8, 3),
(user9, 0)
]
def testmappersplustwocolumns(self):
mapper(User, users)
s = select([users, func.count(addresses.c.address_id).label('count'), ("Name:" + users.c.user_name).label('concat')], from_obj=[users.outerjoin(addresses)], group_by=[c for c in users.c], order_by=[users.c.user_id])
sess = create_session()
(user7, user8, user9) = sess.query(User).select()
q = sess.query(User)
l = q.instances(s.execute(), "count", "concat")
print l
assert l == [
(user7, 1, "Name:jack"),
(user8, 3, "Name:ed"),
(user9, 0, "Name:fred")
]
if __name__ == "__main__":