mirror of
https://github.com/sqlalchemy/sqlalchemy.git
synced 2026-06-12 20:01:00 -04:00
- fixed bug in query.instances() that wouldnt handle more than
on additional mapper or one additional column.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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([])
|
||||
|
||||
@@ -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__":
|
||||
|
||||
Reference in New Issue
Block a user