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