2013-06-14 3 views
0

Hy,Sqlite3 упорядочить по целому числу не работает (даже с индексом)

может кто-нибудь объяснить мне это?

sqlite> .schema LastFM 
CREATE TABLE LastFM(id INTEGER PRIMARY KEY, AlbumTitle TEXT, Hoerer INTEGER); 
CREATE INDEX Hoerer_Index ON LastFM(Hoerer DESC); 
sqlite> Explain SELECT * FROM LastFM ORDER BY Hoerer; 
addr  opcode  p1   p2   p3   p4   p5 
---------- ---------- ---------- ---------- ---------- ---------- --------- 
0   Trace  0   0   0      00 
1   Noop  0   0   0      00 
2   Goto  0   16   0      00 
3   OpenRead 0   6   0   3   00 
4   OpenRead 2   9   0   keyinfo(1, 00 
5   Rewind  2   13   1   0   00 
6   IdxRowid 2   1   0      00 
7   Seek  0   1   0      00 
8   IdxRowid 2   2   0      00 
9   Column  0   1   3      00 
10   Column  2   0   4      00 
11   ResultRow 2   3   0      00 
12   Next  2   6   0      00 
13   Close  0   0   0      00 
14   Close  2   0   0      00 
15   Halt  0   0   0      00 
16   Transactio 0   0   0      00 
17   VerifyCook 0   4   0      00 
18   TableLock 0   6   0   LastFM  00 
19   Goto  0   3   0      00 
sqlite> SELECT * FROM LastFM ORDER BY Hoerer; 
id   AlbumTitle Hoerer 
---------- ------------ ---------- 
35   Live In Oslo 1 
36   Kleine Welt 1 
37   The Land Of 1 
38   No Limit/R 1 
39   Faust... In 1 
40   Live At Last 1 
41   2009-10-10: 1 
42   Collectif Me 1 
13   Bbc Sessions 128 
14   From Glory T 128 
3   So Far  1294 
27   Schiphorst 2 15 
28   Od Serca Do 15 
12   Faust/So F 178 
32   The Wumme Ye 2 
33   The Faust Co 2 

У меня есть таблица LastFM (ID INTEGER PRIMARY KEY, AlbumTitle TEXT, Hoerer INTEGER) и наполнил ее с данными в питона из файла CSV:

 
    reader = csv.reader(open(csvFileName, 'r'), delimiter=';') 
    for row in reader: 
     to_db = [] 
     for col in row: 
      to_db.append(unicode(col, "utf8")) 
     cur.execute("INSERT INTO LastFM(AlbumTitle, Hoerer) VALUES (?, ?);", to_db) 
    sqlConnection.commit() 

Но "приказа" функциональность не работает должным образом. Я уже пытался создать индекс в столбце i wannt для заказа, но он также не работает.

Некоторые подсказки?

+0

Проблема в том, что вам каким-то образом удалось вставить данные в виде ТЕКСТА или BLOB. Хотя TEXT должен быть конвертирован в INTEGER, если возможно, BLOB не может преобразовать. Как короткое исправление, вы можете заказать его с помощью 'CAST (Hoerer AS INTEGER)' –

+0

. Каков вывод 'SELECT sql FROM sqlite_master WHERE name =" LastFM "и type =" table "?? –

+0

sqlite> SELECT sql FROM sqlite_master WHERE name = "LastFM" и type = "table"; sql --- CREATE TABLE LastFM (id INTEGER PRIMARY KEY, AlbumTitle TEXT, Hoerer INTEGER) – user1911091

ответ

0

Вы вставили строки в столбец Hoerer, и именно так упорядочены строки.

Если вы хотите иметь номера в этом столбце, код импорта должен вставлять числа.

Смежные вопросы