2016-12-19 6 views
0

私は、Pythonスクリプトでpsycopg2を使用しています:私はPostgresqlから得た結果をシャッフルできますか?

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

私は行が異なるために、私はそれらを取得するたびになりたいです。どうやってやるの?

更新

行の量はカウントが巨大ではない場合、あなたはrandom.shuffleを使用することができます周り50.000

+0

どのようにこのサーバ側をやってはどうですか? – styvane

+0

テーブルから選択する行の数はいくつですか? – Fomalhaut

答えて

2

です:

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

私の場合は約50k行です。それは巨大ですか? – Kurama

+0

私はそう思います、それは多くのメモリを消費するでしょう。 Pythonでシャッフルするのではなく、ランダムな順序でアイテムを選択することをお勧めします。それを行うにはhttp://stackoverflow.com/questions/8674718/best-way-to-select-random-rows-postgresqlまたはhttp://stackoverflow.com/questions/5297396/quick-random-row-postgresqlを参照してください。 selection-in-postgres – Fomalhaut

+0

これらのリンクのどこがシャッフリングしていますか?ランダムな要素を選択するだけで、すべての要素をランダムな順序で選択するわけではありません。 – Kurama

関連する問題