1064, "You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near
'139.80'' WHERE competitorID=1 AND sku = ''50300288''' at line 1"
Look at all the quotes. It appears to me that you and Python are both adding quotes to your values. I think your actual query ends up as
UPDATE product SET price = ''139.80'' WHERE competitorID=1 AND sku = ''50300288'';
Let me change the spacing for emphasis:
UPDATE product SET price = '' 139.80'' WHERE competitorID=1 AND sku = '' 50300288'';
See?
I think cursor.execute is quoting your values as it inserts them. Try it without quotes and see what happens. You don't need quotes around the price, anyway.
As an alternative, I'd suggest loading the complete query into a single string first, then passing that complete query string to your function. In this case, I expect cursor.execute would have nothing to quote, so you would need to explicitly quote strings in your query. To aid debugging, you should add a line to print the query string before sending it, or perhaps only in the event of an error, so you can compare what's actually sent to what is supposed to be sent.
Michael
Paul Maine wrote:
I encountered the following error when trying to perform a SQL UPDATE to a MySQL database table from Python.
I would apprciate any assistance. In the Python code I have tried integer and decimal format specifiers in addition to the string specifier and nothing worked.
Traceback (most recent call last): File "e:\my_python_scripts\commercecraft.py", line 36, in ? cursor.execute ("UPDATE product SET price = '%s' WHERE competitorID=1 AND sku = '%s'",(myprice,mysku)) File "E:\Python22\Lib\site-packages\MySQLdb\cursors.py", line 95, in execute return self._execute(query, args) File "E:\Python22\Lib\site-packages\MySQLdb\cursors.py", line 114, in _execute self.errorhandler(self, exc, value) File "E:\Python22\Lib\site-packages\MySQLdb\connections.py", line 33, in defaulterrorhandler raise errorclass, errorvalue _mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax. Check the manual that cor responds to your MySQL server version for the right syntax to use near '139.80'' WHERE competitorID=1 AND sk u = ''50300288''' at line 1")
Describe product;
Field Type Null Key Default Extra ------------ ------------ ------ ------ ------- -------------- productID int(11) PRI (NULL) auto_increment sku varchar(50) YES (NULL) description varchar(60) YES (NULL) price decimal(7,2) YES (NULL) scrape_date datetime YES (NULL) competitorID int(11) YES (NULL)
************************************************************** import test_iopus import MySQLdb import sys import string
try: conn = MySQLdb.connect (host = "localhost", user = "root", passwd = "xyz", db = "commerce") except MySQLdb.Error, e: print "Error %d: %s" % (e.args[0], e.args[1]) sys.exit (1)
cursor = conn.cursor() cursor.execute ("SELECT sku FROM product WHERE competitorID=1") while (1): row = cursor.fetchone () if row == None: break mysku = row[0] print mysku print "%d rows were returned" % cursor.rowcount
result = test_iopus.Scrape(mysku) price = result.split(" ") tmpprice = str(price[0])
conversion = string.maketrans("$"," ") myprice = tmpprice.translate(conversion)
print myprice
cursor.execute ("UPDATE product SET price = '%s' WHERE competitorID=1 AND sku = '%s'",(myprice,mysku)) cursor.close() conn.close()
-- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]