By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
439,985 Members | 1,574 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 439,985 IT Pros & Developers. It's quick & easy.

Latest errors on pickled objects and blob datatypes in mysql

P: n/a
hello,
finally the errors for my sql query have changed so I have even
changed the thread subject because I feel now that this is not doable
in mysql and this seams to be a bug, ither in python or the MySQLdb
module or perhaps both.
my table is called testobj and the blob field is called obj.
now following is my query with the cursor named CSRInsert.
CSRInsert.execute("insert into testobj (obj) values (?);",(pickled_object))
the error is,
"type error, not all arguments formatted during string formatting ".

can some one now figure out what could be the problem?
May 7 '07 #1
Share this Question
Share on Google+
2 Replies


P: n/a
On 7 Mag, 19:08, "krishnakant Mane" <researchb...@gmail.comwrote:
hello,
finally the errors for my sql query have changed so I have even
changed the thread subject because I feel now that this is not doable
in mysql and this seams to be a bug, ither in python or the MySQLdb
module or perhaps both.
And why not also a bug in MySQL? Or a neutrino hitting your CPU
changing a 0 into an 1? Doesn't the Occam razor suggest it may be your
fault? :)
my table is called testobj and the blob field is called obj.
now following is my query with the cursor named CSRInsert.
CSRInsert.execute("insert into testobj (obj) values (?);",(pickled_object))
the error is,
"type error, not all arguments formatted during string formatting ".

can some one now figure out what could be the problem?
Please, read the fine manual.

if you had read the DBAPI documentation as previously suggested, you
would know that you MUST use "%s" placeholder, not "?" (because
MySQLdb.paramstyle == 'format'). Just replace the placeholder in your
sql string and keep passing sql and values as two distinct arguments.

The second argument of the execute() method MUST be a tuple (or a
mapping for named parameters, but let's stick to the positional ones).
"(pickled_object)" is not a tuple, it is just an object in
parenthesis. To represent a tuple with a single argument you must
write "(pickled_object,)", notice the trailing comma.

Try:

CSRInsert.execute("insert into testobj (obj) values (%s);",
(pickled_object,))

-- Daniele

May 7 '07 #2

P: n/a
On 7 Mag, 19:08, "krishnakant Mane" <researchb...@gmail.comwrote:
hello,
finally the errors for my sql query have changed so I have even
changed the thread subject because I feel now that this is not doable
in mysql and this seams to be a bug, ither in python or the MySQLdb
module or perhaps both.
And why not also a bug in MySQL? Or a neutrino hitting your CPU
changing a 0 into an 1? Doesn't the Occam razor suggest it may be your
fault? :)
my table is called testobj and the blob field is called obj.
now following is my query with the cursor named CSRInsert.
CSRInsert.execute("insert into testobj (obj) values (?);",(pickled_object))
the error is,
"type error, not all arguments formatted during string formatting ".

can some one now figure out what could be the problem?
Please, read the fine manual.

if you had read the DBAPI documentation as previously suggested, you
would know that you MUST use "%s" placeholder, not "?" (because
MySQLdb.paramstyle == 'format'). Just replace the placeholder in your
sql string and keep passing sql and values as two distinct arguments.

The second argument of the execute() method MUST be a tuple (or a
mapping for named parameters, but let's stick to the positional ones).
"(pickled_object)" is not a tuple, it is just an object in
parenthesis. To represent a tuple with a single argument you must
write "(pickled_object,)", notice the trailing comma.

Try:

CSRInsert.execute("insert into testobj (obj) values (%s);",
(pickled_object,))

-- Daniele

May 7 '07 #3

This discussion thread is closed

Replies have been disabled for this discussion.