hi jason,
after a second thought, i have used your idea for data preloading. it is way
more pythonic and portable that ddl.
thanks again,
alex
On Mon, Sep 8, 2008 at 6:45 PM, jason kirtland <[EMAIL PROTECTED]> wrote:
>
> alex bodnaru wrote:
>> hello friends,
>>
>> i wanted to do a few sql commands in a ddl construct, but i failed with:
>>
>> pysqlite2:dbapi2 warning: you can execute one statement at a time
>>
>> i'm not very familiar with python db layer, but i know sqlite may be invoked
>> specifically to execute one, or many statements divided by ';', so i suspect
>> it's specifically invoked for one statement.
>>
>> while this is a good security measure for sql from untrusted sources, like
>> user
>> input, it's quite annoying for a situation where free sql should be
>> specifically
>> added.
>>
>> as for my case, i had a batch of inserts based on an external file,
>> and i couldn't
>> invoke ddl.execute_at in a loop, so i had to switch to inserting a
>> batch of unioned
>> selects in one insert, which was nice to learn :).
>
> The use case behind the DDL() construct is a single statement. You can
> fire multiple statements by using multiple DDL()s. But for inserts,
> I've found it more useful to write a 'after-create' event listener from
> scratch. Here's one that I use in pretty much every project, in some
> form or another:
>
> def fixture(table, column_names, *rows):
> """Insert data into table after creation."""
> def onload(event, schema_item, connection):
> insert = table.insert()
> connection.execute(
> insert,
> [dict(zip(column_names, column_values))
> for column_values in rows])
> table.append_ddl_listener('after-create', onload)
>
> Looks like this in use:
>
> fixture(some_table,
> ('x', 'y'),
> (1, 2),
> (3, 4),
> (5, 6))
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---