a patch which might make it into 0.9.x or else 1.0 is at 
https://bitbucket.org/zzzeek/sqlalchemy/issue/3069/multi-valued-insert-isnt-checking

which adds this per-value check to every value.


On Jun 3, 2014, at 10:52 PM, Michael Bayer <mike...@zzzcomputing.com> wrote:

> traditional multi-insert is to use executemany() syntax, I'm not sure if 
> sqlite supports values () (), anyway.
> 
> data = [
>   {"id": 1, "value": "foo"},
>   {"id": 2, "value": "bar"}
> ]
> 
> stmt = table.insert().values(adate=sql.func.now())
> engine.execute(stmt, data)
> 
> 
> the func.now() is a constant and the multi-values thing doesn't support 
> different constant expressions in each bundle as it would mean lots of 
> expensive isinstance() checks, if you just put it in the first element that 
> will work also:
> 
> data = [
>   {"id": 1, "value": "foo", "adate":sql.func.now()},
>   {"id": 2, "value": "bar"}
> ]
> 
> stmt = table.insert().values(data)
> print stmt
> 
> 
> 
> 
> 
> 
> On Jun 3, 2014, at 5:40 PM, Stefan Urbanek <stefan.urba...@gmail.com> wrote:
> 
>> Hi,
>> 
>> I'm trying to multi-insert records which contain a function:
>> 
>> record = { 
>>     "some_date": sql.func.now() 
>>     key: value, ...
>> } 
>> 
>> When I execute table insert with list of records where len(records) > 1 then 
>> I get an error:
>> 
>> "sqlalchemy.exc.ProgrammingError: (ProgrammingError) can't adapt type 'now'"
>> 
>> I noticed something in the string representation of the statement:
>> 
>> INSERT INTO table (some_date, col1, col2) VALUES (now(), %(col1_0)s, 
>> %(col2_0)), (%(some_date_1)s, %(col1_1)s, %(col2_1))
>> 
>> Note that the first value in the second record is `%(some_date_1)s` instead 
>> of `now()`
>> 
>> What might be wrong?
>> 
>> Stefan
>> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "sqlalchemy" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to sqlalchemy+unsubscr...@googlegroups.com.
>> To post to this group, send email to sqlalchemy@googlegroups.com.
>> Visit this group at http://groups.google.com/group/sqlalchemy.
>> For more options, visit https://groups.google.com/d/optout.
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> Visit this group at http://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to