Pymysql – получить строку последнего обновления?

У меня есть несколько рабочих потоков, которым нужно извлекать строки из базы данных и работать с ними. Попытка сделать один вызов, который показывает, что строка проверена/проверена. Я надеялся, что курсор.lastrowid сработает, но он всегда возвращает ноль. В документах говорится: «Это свойство только для чтения возвращает значение, сгенерированное для столбца AUTO_INCREMENT предыдущим оператором INSERT или UPDATE». В таблице есть два столбца: я бы (уникальный, автоинкремент) проверил (целое число).

cursor.execute('UPDATE the_table SET checked = 1 WHERE checked = 0 LIMIT 1')
mysql.commit()
id = cursor.lastrowid
print(id) #returns 0 not last id

Это действительно обновляет строку, но курсор.lastrowid всегда равен 0. курсор.rowcount возвращает 1. Проверка базы данных показывает, что затронута одна строка. Есть ли какие-либо известные проблемы или, возможно, у меня что-то не так?

Обновлено: Это может быть невозможно. Я не видел ни одного рабочего примера, в котором UPDATE может вернуть значение auto_increment. Возможно, документы нужно обновить?

Документы, которые вы цитируете, кажутся официальными Соединитель MySQL/Python, но выбранный вами тег указывает на использование библиотеки pymysql. Который из них?

shmee 29.01.2019 08:55

Возможный дубликат ОБНОВЛЕНИЕ на mysql python всегда возвращает 0 как lastrowid

shmee 29.01.2019 09:17

Как отметил @Mike в ответе на повторяющийся вопрос: lastrowid (соответственно mysql_insert_id) возвращает ненулевые значения только после инструкции UPDATE, если в инструкции встречается функция LAST_INSERT_ID(expr), и в этом случае она вернет выражение.

shmee 29.01.2019 09:22

Я видел ответ Майка. Это не соответствует документации, если это так, и не решает проблему правильно. Кажется, его следует использовать только для INSERT. У вас есть пример инструкции, показывающий, как UPDATE повлияет на auto_increment?

Ryan Mills 29.01.2019 20:36
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
1 045
0

Другие вопросы по теме

Должен ли исходный коннектор kafka JDBC MySQL иметь сервер MySQL на локальном хосте?
Как исправить пользователя, не вошедшего в систему в качестве указанной роли в PHP PDO
Файл Cssand js не включен ни в один файл
Как я могу выбрать все столбцы каждой таблицы в моей базе данных, тип которой десятичный (10,0), чтобы мне нужно было перейти на десятичный (10,2) в MySQL
PHP и MySqli - Как искать и работать с «НРАВИТСЯ», даже если в текстовом поле есть дополнительные символы?
Как отобразить столбец group_concat() в таблице данных как в одном столбце?
Как генерировать столбцы динамической таблицы в представлении
SimpleJdbcCall для функции MySql выдает «Невозможно установить параметр IN для возвращаемого значения вызова сохраненной функции»
Улучшить производительность запроса с коррелированным подзапросом
ОШИБКА! Сервер вышел без обновления файла PID (/usr/local/var/mysql/`username`.lan.pid)