MySQL, python update row if null -


i have database contains 7 fields, field 1 unique , rest not. field 2 , 3 null. trying update database information csv file fill in nulls cannot work. field null or field contain information.

db=mdb.connect('localhost','username','password','db') cur=db.cursor() inputinfo=csv.reader(open('insert.csv','r'),delimiter=',') row in inputinfo:     inserthostnames=("""update filesort set hostnames=values(hostnames) hostnames not null""")     cur.execute(inserthostnames,row[1])     insertipaddress=("""update filesort set ipaddress=values(ipaddress) ipaddress not null""") 

it not work , gives me error

traceback (most recent call last):   file "test.py", line 57, in <module>     inserttaddm()   file "test.py", line 47, in inserttaddm     cur.execute(inserthostnames,row[1])   file "/usr/lib/python2.7/dist-packages/mysqldb/cursors.py", line 159, in execute     query = query % db.literal(args) typeerror: not arguments converted during string formatting 

edit1:

for row in inputinfo:     inserthostnames=("""update filesort set hostnames=hostnames hostnames null""",row)     cur.execute(inserthostnames,row[1])     insertipaddress=("""update filesort set ipaddress=ipaddress ipaddress null""",row)     cur.execute(insertipaddress,row[2]) 

this gives error:

typeerror: unsupported operand type(s) %: 'tuple' , 'str' 

edit 2:

for row in inputinfo:     inserthostnames=("""update filesort set hostnames='%s' hostnames null""")     cur.execute(inserthostnames,(db.escape_string(row[1])))     #insertipaddress=("""update filesort set ipaddress='%s' ipaddress null""")     #cur.execute(insertipaddress,row[2]) db.commit() 

gives me:

_mysql_exceptions.programmingerror: (1064, "you have error in sql syntax; check manual corresponds mysql server version right syntax use near 'server2'' hostnames null' @ line 1") 

the apostrophe returned

your execute function contains parameter, row[1] there no place substitution in query string. also, parameters must passed sequence. additionally, if want fill in nulls, where condition should where hostnames null.

further more, since hostnames might contain special characters, might want escape using conn.escape_string

you might want change query to:

inserthostnames=("""update filesort set hostnames='%s' hostnames null""") cur.execute(inserthostnames,(db.escape_string(row[1]))) 

Comments

Popular posts from this blog

javascript - Karma not able to start PhantomJS on Windows - Error: spawn UNKNOWN -

c# - Display ASPX Popup control in RowDeleteing Event (ASPX Gridview) -

Nuget pack csproj using nuspec -