Уведомления

Группа в Telegram: @pythonsu

#1 Март 18, 2010 20:11:54

360
От:
Зарегистрирован: 2009-08-29
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

rowid в sqlite

Помогите, пожалуйста.
Есть база данных, вида (пример)
————-
| 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?



Офлайн

#2 Март 18, 2010 20:42:48

Nik
От:
Зарегистрирован: 2010-01-10
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

rowid в sqlite

Весь смысл primary key в уникальности ключа, а не в последовательности цифр.



Офлайн

#3 Март 18, 2010 21:54:53

360
От:
Зарегистрирован: 2009-08-29
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

rowid в sqlite

спасибо, понял.
тогда как сделать так, чтобы записи в столбце task были пронумерованы от 1? и при удалении значения смещались, т.е. нарушения последовательности не происходило?



Офлайн

#4 Март 18, 2010 23:30:20

Nik
От:
Зарегистрирован: 2010-01-10
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

rowid в sqlite

Нарушения последовательности и не происходит. Новые записи всегда будут иметь больший id. Сортируйте по id, нумеруйте при выводе (если нужна четкая последовательность). Количество позиций на странице ведь известно… Рассчитать остальное достаточно просто…



Офлайн

#5 Март 22, 2010 14:12:17

360
От:
Зарегистрирован: 2009-08-29
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

rowid в sqlite

большое спасибо.
одного немного не могу додумать:
если есть таблица, например,
abc
def
ghi
jkl

то как пронумеровать, чтобы на выходе было
1. abc
2. def
3. ghi
4. jkl

?



Офлайн

#6 Март 22, 2010 16:37:58

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

rowid в sqlite

select id, task from table_name sorted by id;



Офлайн

#7 Март 22, 2010 18:04:02

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

rowid в sqlite

enumerate ?

Офлайн

#8 Март 27, 2010 19:27:03

360
От:
Зарегистрирован: 2009-08-29
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

rowid в sqlite

Ferroman
да, как раз enumerate, в моем случае сделано так:

curs.execute("select * from item")
for row in curs:
print row
но я немного недопонимаю как реализовать через enumerate



Офлайн

#9 Март 28, 2010 02:49:24

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

rowid в sqlite

может так:

for i, row in enumerate(iter(curs.fetchone, None)):
print(i, row)
ЗЫ. проверить в данный момент не могу, нет Python'а под рукой :-(



Офлайн

#10 Март 30, 2010 13:31:15

360
От:
Зарегистрирован: 2009-08-29
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

rowid в sqlite

да, работает, большое спасибо :)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version