[DB-SIG] mysql string length?

Andy Todd andy47 at halfcooked.com
Sun Apr 16 12:42:09 CEST 2006


Lukasz Szybalski wrote:
> On Sat, 2006-04-15 at 12:01 +0000, Andrew Chambers wrote:
>> * Lukasz Szybalski <szybalski at gmail.com> [2006-04-14 12:00:09 -0500]:
>>
>>> INSERT INTO table_x( body)VALUES( '%s')" %  (body)
>>>
>>> this body is a string that varies in size. I keep getting an error if
>>> the size of body is longer then 255, and if its smaller everything
>>> goes smooth. Is this syntax correct? should '%s' be something else?
>> What is the datatype of body?  It sounds like it is CHAR(255).  Can you
>> change this to be TEXT?
>>
> Yes it is text. 
> mysql> describe table_x;
> +----------+---------+------+-----+---------+-------+
> | Field    | Type    | Null | Key | Default | Extra |
> +----------+---------+------+-----+---------+-------+
> | id | int(11) |      | PRI | 0       |       |
> | body     | text    | YES  |     | NULL    |       |
> +----------+---------+------+-----+---------+-------+
> 
> Would some kind of characters that are passed in had something to do
> with the error, maybe EOF or something similar?
> 
> The string that is passed in is from xml node. For debugging i made it
> return str(body), but that didn't change anything. 
> 
> Are there any other database/%s related requirements?
> 
> Lukasz 
> 
> 
>> Regards,
>> Andy


My observation is that with MySQLdb %s is a parameter substitution value 
not a string substitution indicator.

What happens when you try something like this;

 >>> stmt = "INSERT INTO table_x (body) VALUES (%s)" # [1]
 >>> cursor.execute(stmt, (body,))

[1] note that there are no quote marks around the %s

Regards,
Andy
-- 
--------------------------------------------------------------------------------
 From the desk of Andrew J Todd esq - http://www.halfcooked.com/


More information about the DB-SIG mailing list