2016-12-19 3 views
0

Я использую psycopg2 в питона сценария:Как я могу перетасовать результат, полученный из Postgresql?

conn = psycopg2.connect(......) 
    cur = conn.cursor() 
    cur.execute("select * from table1") 
    rows = cur.fetchall() 
    for a1 in rows: # how to shuffle them? 

Я хочу, чтобы ряды, чтобы быть в другом порядке каждый раз, когда я получить их. Как я могу это сделать?

обновление:

количество строк составляют около 50,000

+0

Как насчет делать это на стороне сервера? – styvane

+0

Сколько строк вы выбираете из таблицы? – Fomalhaut

ответ

2

Если счет не столь велик, вы могли бы использовать random.shuffle:

from random import shuffle 

... 

rows = list(cur.fetchall()) 
shuffle(rows) 
# do what you need with the suffled rows 

В противном случае вы можете выбрать элементы в случайном заказ. Там уже способов сделать это в Postgres:

1) Best way to select random rows PostgreSQL

2) quick random row selection in Postgres

+0

Это около 50 тыс. Строк в моем случае. это огромно? – Kurama

+0

Думаю, да, это потребует большой памяти. Я бы рекомендовал вам выбрать ваши товары в произвольном порядке вместо перетасовки в Python. Чтобы это сделать, см. Http://stackoverflow.com/questions/8674718/best-way-to-select-random-rows-postgresql или http://stackoverflow.com/questions/5297396/quick-random-row- select-in-postgres – Fomalhaut

+0

, где shuffing в этих ссылках? они просто выбирают случайные элементы, а не все элементы в случайном порядке. – Kurama

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