Looks like I'm experiencing similar problems with InformixDB 2.5 and
SQLAlchemy 0.5.6. Whenever parameters are sent for execution it looks
like integers are used instead of placeholders like "?" or ":1".
Flollowing are some examples:
2009-10-20 11:12:46,235 INFO sqlalchemy.engine.base.Engine.0x...f5ac
BEGIN
2009-10-20 11:12:46,504 INFO sqlalchemy.engine.base.Engine.0x...f5ac
INSERT INTO users (login, password) VALUES (1, 2)
2009-10-20 11:12:46,506 INFO sqlalchemy.engine.base.Engine.0x...f5ac
['bob', None]
2009-10-20 11:12:46,673 INFO sqlalchemy.engine.base.Engine.0x...f5ac
ROLLBACK
Traceback (most recent call last):
File "p.py", line 93, in <module>
session.commit()
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/orm/session.py", line 673, in commit
self.transaction.commit()
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/orm/session.py", line 378, in commit
self._prepare_impl()
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/orm/session.py", line 362, in _prepare_impl
self.session.flush()
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/orm/session.py", line 1356, in flush
self._flush(objects)
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/orm/session.py", line 1434, in _flush
flush_context.execute()
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/orm/unitofwork.py", line 261, in execute
UOWExecutor().execute(self, tasks)
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/orm/unitofwork.py", line 753, in execute
self.execute_save_steps(trans, task)
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/orm/unitofwork.py", line 768, in execute_save_steps
self.save_objects(trans, task)
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/orm/unitofwork.py", line 759, in save_objects
task.mapper._save_obj(task.polymorphic_tosave_objects, trans)
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/orm/mapper.py", line 1406, in _save_obj
c = connection.execute(statement.values(value_params), params)
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/engine/base.py", line 824, in execute
return Connection.executors[c](self, object, multiparams, params)
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/engine/base.py", line 874, in _execute_clauseelement
return self.__execute_context(context)
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/engine/base.py", line 896, in __execute_context
self._cursor_execute(context.cursor, context.statement,
context.parameters[0], context=context)
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/engine/base.py", line 950, in _cursor_execute
self._handle_dbapi_exception(e, statement, parameters, cursor,
context)
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/engine/base.py", line 931, in _handle_dbapi_exception
raise exc.DBAPIError.instance(statement, parameters, e,
connection_invalidated=is_disconnect)
sqlalchemy.exc.InterfaceError: (InterfaceError) too many actual
parameters 'INSERT INTO users (login, password) VALUES (1, 2)' ['bob',
None]
===========================================================================
2009-10-20 11:36:04,640 INFO sqlalchemy.engine.base.Engine.0x...cfec
BEGIN
2009-10-20 11:36:04,900 INFO sqlalchemy.engine.base.Engine.0x...cfec
INSERT INTO groups (name) VALUES (1)
2009-10-20 11:36:04,901 INFO sqlalchemy.engine.base.Engine.0x...cfec
['admins']
2009-10-20 11:36:05,166 INFO sqlalchemy.engine.base.Engine.0x...cfec
INSERT INTO groups (name) VALUES (1)
2009-10-20 11:36:05,166 INFO sqlalchemy.engine.base.Engine.0x...cfec
['managers']
2009-10-20 11:36:05,430 INFO sqlalchemy.engine.base.Engine.0x...cfec
ROLLBACK
Traceback (most recent call last):
File "p.py", line 86, in <module>
session.commit()
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/orm/session.py", line 673, in commit
self.transaction.commit()
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/orm/session.py", line 378, in commit
self._prepare_impl()
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/orm/session.py", line 362, in _prepare_impl
self.session.flush()
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/orm/session.py", line 1356, in flush
self._flush(objects)
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/orm/session.py", line 1434, in _flush
flush_context.execute()
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/orm/unitofwork.py", line 261, in execute
UOWExecutor().execute(self, tasks)
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/orm/unitofwork.py", line 753, in execute
self.execute_save_steps(trans, task)
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/orm/unitofwork.py", line 768, in execute_save_steps
self.save_objects(trans, task)
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/orm/unitofwork.py", line 759, in save_objects
task.mapper._save_obj(task.polymorphic_tosave_objects, trans)
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/orm/mapper.py", line 1406, in _save_obj
c = connection.execute(statement.values(value_params), params)
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/engine/base.py", line 824, in execute
return Connection.executors[c](self, object, multiparams, params)
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/engine/base.py", line 874, in _execute_clauseelement
return self.__execute_context(context)
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/engine/base.py", line 896, in __execute_context
self._cursor_execute(context.cursor, context.statement,
context.parameters[0], context=context)
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/engine/base.py", line 950, in _cursor_execute
self._handle_dbapi_exception(e, statement, parameters, cursor,
context)
File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/
sqlalchemy/engine/base.py", line 931, in _handle_dbapi_exception
raise exc.DBAPIError.instance(statement, parameters, e,
connection_invalidated=is_disconnect)
sqlalchemy.exc.IntegrityError: (IntegrityError) SQLCODE -268 in
EXECUTE:
23000: Integrity constraint violation
IX000: ISAM error: duplicate value for a record with unique key.
'INSERT INTO groups (name) VALUES (1)' ['managers']
I will try previous versions of SQLalchemy to find out when it started
to happen. It was working for me previously so it must be some recent
version of SQLAlchemy.
Cheers
Alexander
On Oct 20, 11:28 am, goschtl <[email protected]> wrote:
> On 20 Okt., 17:11, "Michael Bayer" <[email protected]> wrote:
>
>
>
> > goschtl wrote:
>
> > > Hello SQLAlchemy,
>
> > > i am new to sqlalchemy, i currently work on project which
> > > needs sqlalchemy/informix integration.
>
> > > Maybe someone can have a look on this:
>
> > > >>> session = Session()
> > > >>> session
> > > <sqlalchemy.orm.session.Session object at ...>
>
> > > >>> from sqlalchemy import MetaData
> > > >>> metadata = MetaData(session.connection())
> > > >>> metadata
> > > MetaData(<sqlalchemy.engine.base.Connection object at ...
>
> > > >>> from sqlalchemy import Table
> > > >>> users = Table('ln_passwd', metadata, autoload=True)
>
> > > >>> print users.c.az == "022301429"
> > > ln_passwd.az = 1 <--- i guess this should be ln_passwd.az
> > > = ?
>
> > > >>> print users.insert(az='022301429')
> > > INSERT INTO ln_passwd (az, az_key, passwort, berecht, versand,
> > > e_m_dat, e_m_zeit, sb_id, ser_nr, s_flag, upd_count) VALUES (1, 2, 3,
> > > 4, 5, 6, 7, 8, 9, 10, 11)
>
> > you mean to say:
>
> > insert().values(az='022301429')
>
> Hi Michael,
>
> you are right this seems to work... thanks for that?
>
>
>
> > also the informix dialect to my knowledge has never been used in recent
> > versions of SQLAlchemy, so your results may vary. at the moment its
> > entirely unsupported since it lacks a maintainer.
>
> Any idae where i can look for this error:
>
> >>> print users.c.az == "022301429"
>
> ln_passwd.az = 1
>
> Do you think thats a problem of the driver or the
> dialect in sqlalchemy itself?
>
> Thanks for your help!
> Christian
>
>
>
> > > So it seems that anything with the parameters goes wrong. I have no
> > > idea where i can look for this problem.
>
> > > If you need more information please let me know?
>
> > > sqlalchemy 0.5.6
> > > informixdb 2.5
>
> > > Christian
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---