Можно ли это сделать с помощью LIMIT? Или можно ли извлечь запись у которой самый большой id, так как у каждой строки он автоинкемируемый, а значит самая последняя будет иметь самое большое значение в столбце id?
cur.execute('SELECT * FROM posts LIMIT 0,1')
Делаю так, но это самая первая строка извлекается.
Одна запись с самым большим id:
SELECT * FROM table WHERE ... ORDER BY id DESC LIMIT 1
Если вы хотите получить последний id, сгенерированный на стороне MySQL сервера при помощи AUTO_INCREMENT (предположил что данный вопрос - продолжение этого вопроса), то это можно сделать так:
после вставки в таблицу с AUTO_INCREMENT:
cursor.execute("INSERT INTO ...")
можно использовать атрибут lastrowid объекта cursor, чтобы получить последний id, вставленный данным курсором:
cursor.lastrowid
или метод:
connection.insert_id()
чтобы получить последний id, вставленный в данном соединении.
PS роследний метод лучше использовать в том случае если приложение использует несколько курсоров для одного соединения.
cur.execute('SELECT * FROM posts ORDER BY id DESC LIMIT 1')
Как здесь уже все указали, нужен ORDER BY и затем LIMIT 1. Добавлю только замечание, что строго говоря наибольший ID может быть не у той записи, которая вам нужна.
Если надо вычислить ID после вставки, то обычно полагаются на cursor.lastrowid.
А если речь о самой свежей записи в календарном смысле, то логично делать сортировку по полю с датой
cur.execute('SELECT * FROM posts ORDER BY posted_at DESC LIMIT 1')
Сборка персонального компьютера от Artline: умный выбор для современных пользователей