Я пытался перетасовать значения столбца в базе данных sqlite, используя sqlalchemy
, но используя запросы SQL.
У меня есть таблица mtr_cdr
со столбцом idx
. Если у меня есть
conn = engine.connect()
conn.execute('SELECT idx FROM mtr_cdr').fetchall()[:3]
, я получаю правильные значения: [(3,),(3,),(3,)]
в этом случае, которые являются верхними значениями в столбце (на данный момент, столбец idx
упорядочен, и есть несколькостроки, которые соответствуют одному и тому же idx
).
Однако, если я попытаюсь:
conn.execute('SELECT idx FROM mtr_cdr ORDER BY RANDOM()').fetchall()[:3]
, я получу [(None,),(None,),(None,)
.
Я использую версию sqlalchemy1.2.9, если это поможет.
Какой подход может дать мне правильный результат, но распространяющийся на большую базу данных? В полной базе данных я ожидаю около 100 миллионов + строк, и я слышал, что ORDER BY RANDOM()
(если я смогу заставить его работать) будет очень медленным ...