Соединение MySQL-python не видит изменений в базе данных, внесенных в другое соединение, даже после того, как изменение зафиксировано

Я использую модуль MySQLdb для Python (предварительно скомпилированный двоичный файл v1.2.3 для Windows Python 2.7) для чтения и записи данных в базу данных MySQL. Когда соединение открыто, я могу использовать это соединение для наблюдения за изменениями, внесенными в базу данных в том же соединении, но не вижу изменений, внесенных с использованием другого соединения, независимо от того, выполнено ли другое соединение в Python или есть изменения, сделанные с использованием клиент командной строки MySQL.В случае, когда я делаю обновления с помощью Python, обратите внимание, что я запускаю команду commit () для соединения.

Пример программы, которая вставляет новые записи в тестовую таблицу с одним столбцом VARCHAR:

import MySQLdb

conn = MySQLdb.connect("localhost", "test", "test", "test")
c = conn.cursor()
c.execute("INSERT INTO test VALUES(%s)", ("Test",))
conn.commit()
c.close()
conn.close()

Пример программы, которая в конечном итоге выводит на печать постоянное количество записей (вместо того, чтобы печатать самое последнее количество записей). Мне удалось обновить счетчик, только отключив и повторно запустив сценарий или открывая новое соединение каждый раз, когда выполняется инструкция SELECT .

import MySQLdb

conn = MySQLdb.connect("localhost", "test", "test", "test")

while True:
    input = raw_input("Enter anything: ")
    if input == "exit":
        break

    c = conn.cursor()
    c.execute("SELECT COUNT(*) FROM test")
    res = c.fetchone()[0]
    c.close()

    print("Number of records: %d" % res)
15
задан shahjapan 16 February 2012 в 06:14
поделиться