Проблема с запросами в Amazon RDS - PullRequest
0 голосов
/ 23 мая 2011

Привет, у меня есть скрипт на python, который подключается к машине Amazon RDS и проверяет наличие новых записей.Мои скрипты отлично работают на локальном хосте.Но на RDS он не обнаруживает новую запись.как только я отменяю скрипт и снова запускаю, я получаю новую запись.Для тестирования я попробовал это следующим образом

cont = MySQLdb.connect("localhost","root","password","DB") 
cursor = cont.cursor() 
for i in range(0, 100):
    cursor.execute("Select count(*) from box")
    A = cursor.fetchone()
    print A 

, и во время этого процесса, когда я добавляю новую запись, она не обнаруживает новую запись, но когда я закрываю соединение и запускаю его снова, я получаю новую запись.Почему это я проверил кеш, он был в 0. Что еще я пропускаю.

Ответы [ 2 ]

0 голосов
/ 24 июня 2011

Я получил решение для этого, это из-за уровня изоляции в Mysql, все, что мне нужно было сделать, это

Set the default transaction isolation level transaction-isolation = READ-COMMITTED

И я использую Django для этого я должен был добавить это в Djangoнастройки базы данных

'OPTIONS': {
                "init_command": "SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED"
                }
0 голосов
/ 23 мая 2011

Я видел, как это происходит в клиентах командной строки MySQL.

Насколько я понимаю (от других людей, ссылающихся на этот URL), API-интерфейс Python часто молча создает транзакции: http://www.python.org/dev/peps/pep-0249/

Если это так, то ваш курсор просматривает непротиворечивую версию данных даже после добавления строк другой транзакцией.Вы можете попробовать выполнить cursor.rollback() в цикле for, чтобы остановить неявную транзакцию, в которой выполняется SELECT.

...