Hi,

On 23 Авг, 17:47, Michael Bayer <[EMAIL PROTECTED]> wrote:
> dont compile() the insert statement yourself here; since you are only
> executing it once, theres nothing to be gained by manually compiling
> first.
this was the minimal code demonstrating the issue.
i planned to do this many times for bulk insert into the table in
database-independent way.

>  Its also the source of the error. the issue is that when the
> Insert is compiled with no "values" clause, it produces column
> entries for all three columns; but youre only sending two columns in
> your argument list.  this behavior is the same in 0.3.

seems there is some other prob too:
- in 0.3 it is issued 2 statements:
select nextval('"Manager_id_seq"')
and then:
INSERT INTO "Manager" (duties, name, id) VALUES (%(duties)s, %(name)s,
%(id)s)
with the ids got from the db and the other parameters.

- in 0.4 it is issued only the last insert with all ids None which
leads to the error

>
> to compile the insert for just two columns (which again, you probably
> dont need to do here), put them in the "values" clause:
>
> c = Insert(values={'x':bindparam('x'), 'y':bindparam('y')}).compile()
> engine.execute(c, {'x':5, 'y':7})
>

even in this case the error is the same in 0.4:

2007-08-23 17:59:34,573 INFO sqlalchemy.engine.base.Engine.0x..2c
INSERT INTO "Manager" (duties, name, id) VALUES (%(duties)s, %(name)s,
%(id)s)
2007-08-23 17:59:34,573 INFO sqlalchemy.engine.base.Engine.0x..2c
[{'name': 'torencho', 'duties': 'bany', 'id': None}, {'name':
'mnogoVojdMalkoIndianec', 'duties': 'lany', 'id': None}]
2007-08-23 17:59:34,578 INFO sqlalchemy.engine.base.Engine.0x..2c
ROLLBACK
Traceback (most recent call last):
  File "insertMultiple.py", line 46, in <module>
    checkWith( db_postgres)
  File "insertMultiple.py", line 40, in checkWith
    dict( name= 'mnogoVojdMalkoIndianec', duties= 'lany'),
  File "/home/stefanb/src/hor/sqlalchemy/engine/base.py", line 784, in
execute
    return Connection.executors[c](self, object, multiparams, params)
  File "/home/stefanb/src/hor/sqlalchemy/engine/base.py", line 815, in
_execute_clauseelement
    return self._execute_compiled(elem.compile(dialect=self.dialect,
parameters=param), multiparams, params)
  File "/home/stefanb/src/hor/sqlalchemy/engine/base.py", line 826, in
_execute_compiled
    self.__execute_raw(context)
  File "/home/stefanb/src/hor/sqlalchemy/engine/base.py", line 838, in
__execute_raw
    self.__executemany(context)
  File "/home/stefanb/src/hor/sqlalchemy/engine/base.py", line 872, in
__executemany
    raise exceptions.SQLError(context.statement, context.parameters,
e)
sqlalchemy.exceptions.IntegrityError: (IntegrityError) null value in
column "id" violates not-null constraint
 'INSERT INTO "Manager" (duties, name, id) VALUES (%(duties)s, %
(name)s, %(id)s)' [{'name': 'torencho', 'duties': 'bany', 'id': None},
{'name': 'mnogoVojdMalkoIndianec', 'duties': 'lany', 'id': None}]

regards,
stefan


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to