[Sqlalchemy-tickets] Issue #3120: sql.true() does not work for IBM DB2 (zzzeek/sqlalchemy)
Brought to you by:
zzzeek
|
From: xtdxhw <iss...@bi...> - 2014-07-09 09:10:47
|
New issue 3120: sql.true() does not work for IBM DB2 https://bitbucket.org/zzzeek/sqlalchemy/issue/3120/sqltrue-does-not-work-for-ibm-db2 xtdxhw: When using sql.true() in query filter to query data in db2. It parse the sql.true() to 'true', which is a string. However, if changed sql.true() to 'True', it works well. E.g. the following code works well. ``` #!python class TT(Base): __tablename__ = 'tt' id = Column(Integer, primary_key = True) btest = Column('btest', Boolean, default = True) db2 = sqlalchemy.create_engine('ibm_db_sa://neutron:neutron@localhost:50000/ntrnovs?charset=utf8') session = sessionmaker( autocommit = False, autoflush = False, bind = db2)() print session.query(TT).filter(TT.btest==True).all()[0].btest ``` However, if I changed the 'True' to 'sql.true()', it raise the following errors. ``` #!python [root@rhel62 ~]# python db2_select.py Traceback (most recent call last): File "db2_select.py", line 18, in <module> print session.query(TT).filter(TT.btest==sql.true()).all()[0].btest File "/usr/lib64/python2.6/site-packages/sqlalchemy/orm/query.py", line 2115, in all return list(self) File "/usr/lib64/python2.6/site-packages/sqlalchemy/orm/query.py", line 2227, in __iter__ return self._execute_and_instances(context) File "/usr/lib64/python2.6/site-packages/sqlalchemy/orm/query.py", line 2242, in _execute_and_instances result = conn.execute(querycontext.statement, self._params) File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/base.py", line 1449, in execute params) File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/base.py", line 1584, in _execute_clauseelement compiled_sql, distilled_params File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/base.py", line 1698, in _execute_context context) File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/base.py", line 1691, in _execute_context context) File "/usr/lib/python2.6/site-packages/ibm_db_sa/ibm_db.py", line 104, in do_execute cursor.execute(statement, parameters) File "/usr/lib64/python2.6/site-packages/ibm_db_dbi.py", line 1334, in execute self._set_cursor_helper() File "/usr/lib64/python2.6/site-packages/ibm_db_dbi.py", line 1217, in _set_cursor_helper raise self.messages[len(self.messages) - 1] sqlalchemy.exc.ProgrammingError: (ProgrammingError) ibm_db_dbi::ProgrammingError: SQLNumResultCols failed: [IBM][CLI Driver][DB2/LINUXX8664] SQL0401N The data types of the operands for the operation "=" are not compatible or comparable. SQLSTATE=42818 SQLCODE=-401 'SELECT tt.id AS tt_id, tt.btest AS tt_btest \nFROM tt \nWHERE tt.btest = true' () ``` [root@rhel62 ~]# rpm -qa | grep sqlalchemy python-sqlalchemy-0.7.9-1 |