DB-API execute params, am I missing something?
Gabriel Rossetti
gabriel.rossetti at arimaz.com
Fri May 29 02:47:35 EDT 2009
Diez B. Roggisch wrote:
> Gabriel Rossetti wrote:
>
>
>> Hello everyone, I am trying to use dbapi with mysql and I get this error:
>>
>> Traceback (most recent call last):
>> File "<stdin>", line 1, in <module>
>> File "<stdin>", line 2, in getUnitParams
>> File "/var/lib/python-support/python2.5/MySQLdb/cursors.py", line 151,
>> in execute
>> query = query % db.literal(args)
>> TypeError: int argument required
>>
>> with this code :
>>
>> import MySQLdb
>>
>> def getParams(curs):
>> curs.execute("select * from param where id=%d", 1001)
>> return curs.fetchall()
>>
>> cp = MySQLdb.connect(host="localhost",
>> port=3306,
>> user="root",
>> passwd="123",
>> db="test")
>>
>> curs = cp.cursor()
>> result = getParams(curs)
>>
>> I checked MySQLdb.paramstyle and it uses "format". I also tried passing
>> (1001,) instead of just 1001 as the param but this changes nothing. What
>> am I doing wrong?
>>
>
> AFAIK you need to use %s, regardless of what type you pass.
>
> Diez
>
Ok, thank you, that was the problem. I also learned not to put the
quotes in the SQL statement (e.g. SELECT * FROM toto WHERE
toto.name='%s') since the call to literal() adds them :-)
Thank you,
Gabriel
More information about the Python-list
mailing list