INSERT / UPDATE в MySQL на Python
Ну в принципе и не на Python, важен принцип. Что мне нужно? Если UPDATE завершился ошибкой (данные не обновлены т.к. их нет), тогда INSERT. Вообще в MYSQL есть специальная команда — REPLACE, у которой синтаксис такой-же как у INSERT, за исключением того, что если такая запись уже есть, то она просто измениться. Одно НО. Таблица обязательно должна содержать колонки с UNIQUE. А если их нет, и добавить нельзя? Тогда к сожалению придется «отлавливать» результат выполнения UPDATE — а именно количество изменившихся записей. Если 0 — считаем что такой записи вообще нет, и вставляем. На Python нечто подобное реализовать можно вот так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
sql="update device_status set param_value=0,stamp=now() where param_name='Uptime' and device_id="+str(device_id); func.putlog("---обновляю статус свича в биллинге ") cursor2 = connb2.cursor() func.putlog("----SQL:"+sql) try: cursor2.execute(sql); connb2.commit(); print (format(cursor2.rowcount)) if format(cursor2.rowcount)=="0": func.putlog("---- новый свич, добавляем данные в таблицу.."); sql="INSERT into device_status (record_id,device_id,port_id,param_name,param_value,stamp) values (null,"+str(device_id)+",null,'Uptime',UNIX_TIMESTAMP(),now())"; cursor2.execute(sql); connb2.commit(); sql="INSERT into device_status (record_id,device_id,port_id,param_name,param_value,stamp) values (null,"+str(device_id)+",null,'State',2,now())"; cursor2.execute(sql); connb2.commit(); |