0
Мой скрипт обычно правильно вставляет данные в базу данных MySQL, однако, когда я планирую его запускать каждые 10 секунд (это планирование называет этот скрипт каждые 10 секунд) падает примерно в 50% случаев.ВНИМАНИЕ: root: не удалось вставить значения - вставить не всегда успешно в mysql
Любые предложения?
some unimportant code here
# Calculate pulse length
elapsed = stop-start
# Distance pulse travelled in that time is time
# multiplied by the speed of sound (cm/s)
distance = elapsed * speedSound
# That was the distance there and back so halve the value
distance = distance/2
distance = '{:f}'.format(distance)
print(distance)
time = time.strftime('%Y-%m-%d %H:%M:%S')
print(time)
# Open database connection
db = MySQLdb.connect("192.168.2.3","sonic","123456","Pi")
cursor = db.cursor()
sql = "INSERT INTO UltraSonic (distance, time) VALUES (%s, %s)"
try:
cursor.execute(sql, (distance, time))
db.commit()
# Rollback in case there is any error
# db.rollback()
except MySQLdb.IntegrityError:
logging.warn("failed to insert values %s, %s", distance, time)
# disconnect from server
finally:
db.close()
print ("Ok")
Пожалуйста, укажите любые ошибки, с которыми вы сталкиваетесь. Вы можете удалить свой «кроме MySQLdb.IntegrityError», чтобы вы могли получить реальное исключение, а не просто регистрировать предупреждение. – joeb
not usre, если это правильный вывод, я просто удалил исключение из кода: Traceback (последний последний звонок): Файл «sonic.py», строка 80, в cursor.execute (sql, (расстояние, время)) Файл «/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py», строка 174, в исполнении self.errorhandler (self, exc, value) Файл «/ usr/lib/python2 .7/dist-packages/MySQLdb/connections.py ", строка 36, в defaulterrorhandler Повысить errorclass, errorvalue _mysql_exceptions.IntegrityError: (1062," Дублировать запись '17 .384983 'для ключа' PRIMARY '") –
Вы пытаетесь чтобы вставить строку, которая нарушит правила таблицы. Вам нужно будет настроить таблицу или код, чтобы этого не произошло. – joeb