[APSW] SELECT COUNT(*) not succesfull?

Bruno Desthuilliers bruno.42.desthuilliers at websiteburo.invalid
Thu Oct 23 04:07:14 EDT 2008


Gilles Ganault a écrit :
> On Thu, 23 Oct 2008 00:24:01 -0200, "Gabriel Genellina"
> <gagsl-py2 at yahoo.com.ar> wrote:
>> In case you didn't notice, B.D. already provided the answer you're after -  
>> reread his 3rd paragraph from the end.
> 
> Yes, but it doesn't work with this wrapper (APSW version 3.5.9-r1):
> 
>>> The recommended way is to pass the arguments to cursor.execute, ie:
> 
> I'm getting an error when doing it this way:
> 
> =======
> isbn = "123"
> sql = "SELECT COUNT(*) FROM books WHERE isbn='%s'"
> 
> #Incorrect number of bindings supplied.  The current statement uses 0
> and there are 1 supplied.  Current offset is 0
> cursor.execute(sql, (isbn,))

There was a notice about checking the correct placeholder for your 
db-api implementation - it's not necessarily '%s' !-)

> =======
> 
> I don't know enough about Python and this wrapper to tell why it
> triggers an error.
> 
>>> you want:
>>>         row = cursor.fetchone()
>>>         count = row[0]
>>>         if not count:
> 
> This wrapper doesn't seem to support fetchone():
> 
> =====
> #AttributeError: 'apsw.Cursor' object has no attribute 'fetchone'
> row = cursor.fetchone()
> =====
> 
> This works, though:
> ========
> 	cursor.execute(sql)
> 	for row in cursor.execute(sql):
> 		#Record not found -> Insert
> 		if not row[0]:

Ok, so I wrongly assumed this apws stuff was db-api compliant, and you 
can as well forget everything I wrote. My fault, I should have 
double-checked this before answering.



More information about the Python-list mailing list