Переробили деякий пітонівський скрипт, він став рідше робити зміни і проявилася несподівана проблема: при переконфігурації він наполегливо відмовлявся бачити зовнішні зміни. Тобто, хтось зовні змінює параметр, а скрипт геть ігнорує ці нововведення.
Несподівано для себе зробив відкриття, що в межах транзакції результат вибірки завжди один і той самий (для одного запиту):
mysql> start transaction; mysql> select * from table; -- якийсь результат mysql> -- в цей час хтось змінює записи таблиці table mysql> select * from table; -- повертає початкову вибірку без змін mysql> commit; mysql> select * from table; -- тепер вже видно зміни з іншої транзакції
А почалася ця проблема саме через розширення пітона MySQLdb. Він автоматично для нового з’єднання починає нову транзакцію, а закрити її пропонує самостійно викликом
conn.commit()
Саме його й бракувало у коді після вибору з бази даних…
Немає коментарів:
Дописати коментар