[DB-SIG] Preparing statement API

Hrvoje Niksic hniksic@iskon.hr
26 Jan 2000 09:10:27 +0100


"M.-A. Lemburg" <mal@lemburg.com> writes:

> >     statement = cur.prepare("INSERT INTO foo (user, name) VALUES (?, ?)")
[...]
> The problem with this approach is that you'd have to store the
> perpared information somewhere.  This is usually done by the cursor
> which is not under Python's control.

You'd store it (or a pointer to it) in the statement object, returned
by cursor.prepare().  Given that prepare() is a cursor method, the
cursor can be made aware of each such object.

> cursor.prepare(operation) 
>          Prepare a database operation (query or command) statement for
>          later execution and set cursor.command. To execute a prepared
> 	 statement, pass cursor.statement to one of the .executeXXX()
> 	 methods.
> 
> cursor.command
>          Provides access to the current prepared SQL command available
>          through the cursor. This is set by .prepare(), all catalog
> 	 methods, .execute() and .executemany().

This is very close to what I proposed, except that my cursor.prepare()
returns the statement (which you provide through cursor.command).
This allows one to prepare more than one statement using one cursor.