sqlalchemy每个sql查询随机种子



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

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

注意:我使用的是postgresql

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

这是正确的方法吗?如果是,有没有一种方法可以动态地获取查询的列数?如果没有,正确的方法是什么?

您可以使用inspect来获取列数

类似于:

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))

相关内容

  • 没有找到相关文章

最新更新