strategy would fail if the entity was an aliased()
construct. [ticket:1964]
+ - Fixed indexing of Query objects by -1. It was erroneously
+ transformed to the empty slice -1:0 that resulted in
+ IndexError. [ticket:1968]
+
- sql
- The 'info' attribute of Column is copied during
Column.copy(), i.e. as occurs when using columns
else:
return list(res)
else:
- return list(self[item:item+1])[0]
+ if item == -1:
+ return list(self)[-1]
+ else:
+ return list(self[item:item+1])[0]
@_generative(_no_statement_condition)
def slice(self, start, stop):
orig = query.all()
assert query[1] == orig[1]
+ assert query[-4] == orig[-4]
+ assert query[-1] == orig[-1]
+
assert list(query[10:20]) == orig[10:20]
assert list(query[10:]) == orig[10:]
assert list(query[:10]) == orig[:10]
assert query.filter(foo.c.bar<30).values(sa.func.max(foo.c.bar)).next()[0] == 29
assert query.filter(foo.c.bar<30).values(sa.func.max(foo.c.bar)).next()[0] == 29
# end Py2K
-
+
+ @testing.fails_if(lambda:testing.against('mysql+mysqldb') and
+ testing.db.dialect.dbapi.version_info[:4] == (1, 2, 1, 'gamma'),
+ "unknown incompatibility")
@testing.resolve_artifact_names
def test_aggregate_1(self):
- if (testing.against('mysql+mysqldb') and
- testing.db.dialect.dbapi.version_info[:4] == (1, 2, 1, 'gamma')):
- return
query = create_session().query(func.sum(foo.c.bar))
assert query.filter(foo.c.bar<30).one() == (435,)