2016-07-10 18 views
0

私はいつも同じクエリの結果を得るためにORDER_BY使用sqlalchmyクエリ結果をシャッフルするときランダムシードを設定したいと思います:Pythonのsqlalchemy.sql.expression.func.random()でランダムなシードを設定するには?

my_query.order_by(func.random()) 

私はドキュメントでそれを行う方法を見つけることができませんでした。私はそれを試してみた

my_query.order_by(func.random(random_seed=1)) 
my_query.order_by(func.random(random_state=1)) 

しかし、両方がうまくいきませんでした。 事前にアイデアやヒントをありがとうございます!

すべてのベスト、 リー

答えて

0

SQLAlchemyのfuncオブジェクトはちょうどSQLの関数をレンダリングします。

>>> from sqlalchemy import func 
>>> print(func.random()) 
random() 

場合によっては(これも含めて)、さまざまなデータベースのバックエンドで異なる基本機能をレンダリングします。 MySQLの上:

>>> from sqlalchemy.dialects import mysql 
>>> print(func.random().compile(dialect=mysql.dialect())) 
rand() 

これは、例えば、あなたが使用しているデータベースは、乱数を生成するものであり、したがって、あなたがシードを設定するには、データベースの特定の関数を呼び出す必要があることを意味しPostgreSQLの上で、あなたは他のSQL関数と同じ方法で呼び出されたsetseedを、使用します。

>>> func.setseed(0.123...) 
+0

私はシンプルsqlliteデータ・ベースを使用しています。私はsetseedコマンドを使用しようとしましたが、動作しません。任意のアイデアはどのようにsqlliteでそれを行うには?ドキュメントはこの問題に対処していないようです。 – lea

+0

あなたの質問のSQLAlchemy部分は答えられましたが、本当にあなたはデータベース質問をしています。 SQLiteでは不可能です。http://stackoverflow.com/questions/24256258/order-by-random-with-seed-in-sqlite – RazerM

関連する問題