1. ホーム
  2. python

[解決済み] SQLAlchemyでランダムな行を取得する

2023-02-27 17:52:34

質問

SQLAlchemy を使って、テーブルからランダムに1つ以上の行を選択するにはどうしたらよいですか?

どのように解決するのですか?

これは、非常にデータベース固有の問題です。

PostgreSQL, SQLite, MySQL, Oracle にはランダム関数による順序付けの機能があるので、 SQLAlchemy でこれを使うことができるのは知っています。

from  sqlalchemy.sql.expression import func, select

select.order_by(func.random()) # for PostgreSQL, SQLite

select.order_by(func.rand()) # for MySQL

select.order_by('dbms_random.value') # For Oracle

次に、必要なレコードの数でクエリを制限する必要があります (たとえば .limit() ).

少なくともPostgreSQLでは、ランダムなレコードを選択することは重大なパフォーマンス上の問題があることを心に留めておいてください。 ここで はそれについての良い記事です。