Multiplying CASE statement by field generates TypeError: can only concatenate list (not "itertools.chain") to list
Issue #1388
resolved
The following code works under 0.5.2 but produces an error under 0.5.3:
from sqlalchemy import Table, Column, Integer, MetaData, create_engine, case, select
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
users_table = Table('users', metadata,
Column('id', Integer, primary_key=True),
Column('foo', Integer),
)
metadata.create_all(engine)
print select([(users_table.c.foo)*case([(users_table.c.id>10, 1), (users_table.c.id<10, 2)](users_table.c.id,))])
The desired SQL is:
SELECT users.id, users.foo * CASE WHEN (users.id > 10) THEN 1 WHEN (users.id < 10) THEN 2 END AS anon_1
FROM users
Comments (5)
-
Account Deleted -
Account Deleted The test code is self contained and can be run by simply pasting it into a file. The traceback is:
Traceback (most recent call last): File "error_test.py", line 13, in <module> print select([(users_table.c.foo)*case([(users_table.c.id>10, 1), (users_table.c.id<10, 2)](users_table.c.id,))]) File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.5.3-py2.5.egg/sqlalchemy/sql/expression.py", line 246, in select s = Select(columns, whereclause=whereclause, from_obj=from_obj, **kwargs) File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.5.3-py2.5.egg/sqlalchemy/sql/expression.py", line 3218, in __init__ self._froms.update(_from_objects(*self._raw_columns)) File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.5.3-py2.5.egg/sqlalchemy/sql/expression.py", line 886, in _from_objects return itertools.chain(*[for element in elements](element._from_objects)) File "/usr/lib/python2.5/site-packages/SQLAlchemy-0.5.3-py2.5.egg/sqlalchemy/sql/expression.py", line 2384, in _from_objects return self.left._from_objects + self.right._from_objects TypeError: can only concatenate list (not "itertools.chain") to list
-
repo owner -
repo owner - changed status to resolved
this works in current trunk (pre-0.5.4).
-
repo owner - removed milestone
Removing milestone: 0.5.4 (automated comment)
- Log in to comment
Can you post the full stack trace?