首页 > 解决方案 > 每个 sql 查询的 sqlalchemy 随机种子

问题描述

我正在寻找一种方法来随机排序 sqlalchemy 查询的结果,但是我希望每个用户的随机顺序基于让我们说一个令牌是一致的。

q = q.order_by(func.random())

注意:我正在使用 postgresql

我发现我可以使用select setseed(0)查询结果并将所有内容合并,然后偏移 1,但是假设我知道列数q将具有(我可能会找到),但这听起来是一个非常糟糕的做法对列数进行硬编码,尤其是为了可维护性。

这是正确的方法吗?如果是这样,有没有办法动态获取查询的列数?如果不是,那么正确的方法是什么?

标签: flasksqlalchemyflask-sqlalchemy

解决方案


您可以使用检查来获取列数

就像是:

from sqlalchemy import inspect
url=YOUR_DB_URL
engine = create_engine(url, convert_unicode=True, echo=False)
inspector = inspect(engine)
schemas = inspector.get_schema_names() #(If you need to find the names of the schemas)
number_of_cols= len(inspector.get_columns(YOUR_TABLE_NAME, schema=SCHEMA_NAME))

推荐阅读