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

MySQLdb UPDATE does nothing

P: n/a
Hi,

I normally work with Java but I'm interested in using Python as well,
particularly for little tasks like doing some massaging of data in a
MySQL database. Below is my first attempt. I'm sure it's inelegantly
written, but my main concern is that the UPDATE sql doesn't actually
work, and I can't understand why. No error is returned, it's just that
the update does not take place. The SQL itself is fine, though - if I
instead write the SQL to a file I can use it from the mysql command line
and it does all the updates just fine. What have I missed?

John

===================================

#!/usr/bin/python

# import MySQL module
import MySQLdb

# connect
db = MySQLdb.connect(host="localhost", user="john",
passwd="xxx",db="test_db")

# create a cursor
cursor = db.cursor()

# execute SQL statement
cursor.execute("SELECT DISTINCT product_id FROM product_attribute")

# get the resultset as a tuple
result = cursor.fetchall()

# iterate through resultset
for record in result:
sql="SELECT id FROM product_attribute WHERE product_id =
"+str(record[0])
print " "+sql
cursor.execute(sql)
result2=cursor.fetchall()
index=0
for record2 in result2:
sql="UPDATE product_attribute SET index_column = "+str(index)+"
WHERE id = "+str(record2[0])
print " "+sql
cursor.execute(sql)
index+=1

cursor.close()


Sep 15 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a
>> sql="UPDATE product_attribute SET index_column = "+str(index)+" WHERE id = "+str(record2[0])
..
cursor.execute(sql)


To allow the DB-API adaptor to correctly take care of value conversion
and SQL escaping for you, this should be written as:

cursor.execute("UPDATE product_attribute SET col1 = %s WHERE id = %s",
(index, record2[0]))
As for why the UPDATE has no effect, which version of MySQL are you
using?
David.

Sep 15 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.