Python + MySQLdb странная проблема

У меня проблема с использованием библиотеки MySQLdb. Я пытаюсь вставить значения в таблицу, но MySQL не показывает их. Более странно, что первичный ключ меняется, когда я вручную вставляю значения с помощью командной строки.

Чтобы показать вам пример:

'786', '2011-02-16 14:52:38', NULL '787', '2011-02-16 14:52:52', NULL '792', '2011-02-16 14:53:25', NULL 

Я вручную вставляю какое-то значение в 786 и 787 (первичный ключ), затем запускаю скрипт python, останавливая его после того, как получил 4 значения. Я набираю 'SELECT * из таблицы', и я не вижу никаких изменений. Затем я вставляю другое значение (вручную) и показывает новый первичный ключ «792». Кажется, что скрипт python удаляет все …

Вот мой код python:

 try: conn = MySQLdb.connect(host = "127.0.0.1", user = "root", passwd = "eBao1234", db = "test") cursor = conn.cursor() print 'data base connected' try: while 1: localtime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) i = i + 1 aRead = ser.readline() aSplit = aRead.split(",") if aSplit[0] == "t": print str(i) + ", " + localtime + ", " + aSplit[1] tableName = "sampdb" dbquery = "INSERT INTO %s (timestamp, tempReading) VALUES (NOW(), %s);" % (tableName, aSplit[1]) cursor.execute(dbquery) except KeyboardInterrupt: ser.close() #csvResults.close() #cursor.close() #conn.close() print "\nInterrupted." raw_input("Press enter to exit.") except Exception,e: print str(e) print 'error connecting to database' cursor.close() conn.close() 

  • Поворотные столы в рамке данных pandas
  • панды: считать вещи
  • Как писать простые геометрические фигуры в массивы numpy
  • Фильтровать каталог при использовании shutil.copytree?
  • Aptana Error-pydev: порт не связан (найден порт -1)?
  • Открытие pdf-страниц с pyPdf
  • Я хочу подождать как файлового дескриптора, так и мьютекса, какой рекомендуемый способ сделать это?
  • как установить pygame на Mac 10.6.8, установив python 2.7.9
  • 3 Solutions collect form web for “Python + MySQLdb странная проблема”

    Включите автосообщение или внесите изменения, см .: Мои данные исчезли!

    Если у вас (также) возникла проблема с выполнением нескольких инструкций INSERT, которые не сохраняются в базе данных, посмотрите на мой ответ на pymysql callproc (), который влияет на последующие выборки

    Однако чуть позже я узнал, что моя проблема в том, что exit () был слишком быстро выведен. Итак, я добавил time.sleep (3) перед вызовом exit () – он сработал!

     import time time.sleep(3) cur.close() conn.close() time.sleep(3) exit() 

    Обновление. Опять же, история еще не закончилась … Я испытал подобную ошибку позже в своем сценарии при выборе из базы данных и не получая никаких результатов. Это не похоже на упомянутое поведение time.sleep (x).

    Когда вы выполняете инструкции, которые изменяют базу данных, вы должны зафиксировать, как уже было ответили. Если вы используете только SELECT, вам не нужно фиксировать. Будьте осторожны с autocommit, потому что, если кто-то другой работает над базой данных, и вы включили автозапуск, его / ее изменения будут совершены при выполнении вашего скрипта, даже если он / она еще не закончен или не хочет совершать.

    Python - лучший язык программирования в мире.