Flask sqlalchemy每个sql查询的随机种子

Flask sqlalchemy每个sql查询的随机种子,flask,sqlalchemy,flask-sqlalchemy,Flask,Sqlalchemy,Flask Sqlalchemy,我正在寻找一种对sqlalchemy查询的结果进行随机排序的方法,但是我希望基于令牌的随机顺序对每个用户保持一致 q = q.order_by(func.random()) 注意:我使用的是postgresql 我发现我可以使用select setseed(0)并将所有列与查询结果合并,然后用1进行偏移,但是这假设我知道q将包含的列数(我可能会找到),但对列数进行硬编码听起来是一种非常糟糕的做法,尤其是为了可维护性 这是正确的方法吗?如果是这样,有没有一种方法可以动态获取查询的列数?如果没有,

我正在寻找一种对sqlalchemy查询的结果进行随机排序的方法,但是我希望基于令牌的随机顺序对每个用户保持一致

q = q.order_by(func.random())
注意:我使用的是postgresql

我发现我可以使用
select setseed(0)
并将所有列与查询结果合并,然后用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))

您可以使用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))