360
Март 18, 2010 20:11:54
Помогите, пожалуйста.
Есть база данных, вида (пример)
————-
| 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?
Nik
Март 18, 2010 20:42:48
Весь смысл primary key в уникальности ключа, а не в последовательности цифр.
360
Март 18, 2010 21:54:53
спасибо, понял.
тогда как сделать так, чтобы записи в столбце task были пронумерованы от 1? и при удалении значения смещались, т.е. нарушения последовательности не происходило?
Nik
Март 18, 2010 23:30:20
Нарушения последовательности и не происходит. Новые записи всегда будут иметь больший id. Сортируйте по id, нумеруйте при выводе (если нужна четкая последовательность). Количество позиций на странице ведь известно… Рассчитать остальное достаточно просто…
360
Март 22, 2010 14:12:17
большое спасибо.
одного немного не могу додумать:
если есть таблица, например,
abc
def
ghi
jkl
то как пронумеровать, чтобы на выходе было
1. abc
2. def
3. ghi
4. jkl
?
pythonwin
Март 22, 2010 16:37:58
select id, task from table_name sorted by id;
Ferroman
Март 22, 2010 18:04:02
enumerate ?
360
Март 27, 2010 19:27:03
Ferromanда, как раз enumerate, в моем случае сделано так:
curs.execute("select * from item")
for row in curs:
print row
но я немного недопонимаю как реализовать через enumerate
pyuser
Март 28, 2010 02:49:24
может так:
for i, row in enumerate(iter(curs.fetchone, None)):
print(i, row)
ЗЫ. проверить в данный момент не могу, нет Python'а под рукой :-(
360
Март 30, 2010 13:31:15
да, работает, большое спасибо :)