Форум сайта python.su
Помогите, пожалуйста.
Есть база данных, вида (пример)
————-
| id | task|
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | d |
————-
id присваивается через “id integer primary key”
как мне сделать так, чтобы при удалении, например, записи 3 или записи 2 или какой другой, чтобы не нарушался порядок в id?
то есть был было бы не 1, 2, 4 или не 1, 3, 4, соответственно, а 1, 2, 3?
Офлайн
Весь смысл primary key в уникальности ключа, а не в последовательности цифр.
Офлайн
спасибо, понял.
тогда как сделать так, чтобы записи в столбце task были пронумерованы от 1? и при удалении значения смещались, т.е. нарушения последовательности не происходило?
Офлайн
Нарушения последовательности и не происходит. Новые записи всегда будут иметь больший id. Сортируйте по id, нумеруйте при выводе (если нужна четкая последовательность). Количество позиций на странице ведь известно… Рассчитать остальное достаточно просто…
Офлайн
большое спасибо.
одного немного не могу додумать:
если есть таблица, например,
abc
def
ghi
jkl
то как пронумеровать, чтобы на выходе было
1. abc
2. def
3. ghi
4. jkl
?
Офлайн
select id, task from table_name sorted by id;
Офлайн
enumerate ?
Офлайн
Ferroman
да, как раз enumerate, в моем случае сделано так:
curs.execute("select * from item")
for row in curs:
print row
Офлайн
может так:
for i, row in enumerate(iter(curs.fetchone, None)):
print(i, row)
Офлайн
да, работает, большое спасибо :)
Офлайн