Я только что узнал, используя пакет MySQLDb для Python, и я знаком с извлечением строк из оператора select.
cursor.execute("SELECT movie_list_....")
result = cursor.fetchall()
Как я заметил, когда я запускаю первую команду, она отображает 123L, числостроки пострадали.Когда я запускаю вторую команду, данные на самом деле выбираются.
Когда я выполняю fetchall (), снова читает БД в том состоянии, в котором она существовала в то время ?
Значение , о котором я беспокоюсь пример: я выполнил операцию выбора, которая затрагивает 30 строк.Я обрабатываю их по 10 одновременно курсором.fetchmany (10).Затем я складываю эти 10 чисел (это пример!).Первые две итерации прошли успешно, но перед третьей итерацией для таблицы было выполнено обновление , которое затрагивает те же строки .Затем происходит третья итерация.
Итак, будет ли моя сумма отражать базу данных во время запроса на выборку ?Или это будет смесь старых и новых ценностей?
Я помню кое-что в колледже под названием «проблема грязного чтения».Но это было в контексте чтения строк одновременно, а не , как пакеты , как fetchmany ().
Пожалуйста, опишите меня в моих пробелах в теории баз данных, которая решает эту проблему.