DBI cursor behaviour with multiple statements?
Steve Holden
sholden at holdenweb.com
Tue Oct 1 12:27:13 EDT 2002
"Paul Boddie" <paul at boddie.net> wrote in message
news:23891c90.0210010756.7ec21b94 at posting.google.com...
> mark.charsley at REMOVE_THIS.radioscape.com (Mark Charsley) wrote in message
news:<memo.20021001113236.1724B at a.a>...
> > In article <23891c90.0209300554.5b37c195 at posting.google.com>,
> > paul at boddie.net (Paul Boddie) wrote:
> >
> > > "SELECT * FROM table WHERE column IN %s"
> >
> > Does that work? I've never been able to pass in a list of things like
that
> > in either ODBC or ADO from C++. Which means:
> > a) the python library isn't cacheing the execution plan, and is just
> > building a new building a new SQL statement with each call (which is
going
> > to have serious consequences), or
>
> The only DB-API module that I've tried with "IN" that seemed to
> support it was psycopg (out of that one and pyPgSQL). I don't know how
> the psycopg people have implemented it, though, and from certain
> conversations I've had, I don't think PostgreSQL supports/-ed proper
> parameter binding anyway.
>
> > b) it's possible to make DB calls from python that can't be made from
C++,
> > or
> > c) I've been an idiot
>
> Ruling out the last one, ;-) I would suspect that everything depends
> on the database library or DB-API module concerned, given that
> database vendors won't have overlooked this one. Have you tried using
> mxODBC to see if this kind of thing is supported there?
>
Unless Herr Lemburg has put it in the latest release, I'd say mxODBC doesn't
support it.
Python 2.2 (#28, Dec 21 2001, 12:21:22) [MSC 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import mx.ODBC.Windows as db
>>> c = db.Connect("Holdenwebsql")
>>> cc = c.cursor()
>>> cc.execute("SELECT Name FROM StdPage WHERE Num IN ?", ((10,20,30,40),))
Traceback (most recent call last):
File "<stdin>", line 1, in ?
mx.ODBC.Windows.ProgrammingError: ('42000', 1064, "[TCX][MyODBC]You have an
erro
r in your SQL syntax near ''(10, 20, 30, 40)'' at line 1", 5696)
>>>
regards
-----------------------------------------------------------------------
Steve Holden http://www.holdenweb.com/
Python Web Programming http://pydish.holdenweb.com/pwp/
Previous .sig file retired to www.homeforoldsigs.com
-----------------------------------------------------------------------
More information about the Python-list
mailing list