随机函数如何在python中的sqlalchemy中工作(对于MySQL数据库)?

时间:2018-03-19 14:17:22

标签: python sqlalchemy

我在文档中没有找到任何答案,所以我请求你帮忙。我想从我的数据库中生成随机响应。为了重现,我设置种子并以这种方式调用一个简单的查询:

func.setseed(0)
session.query(MyModel.id).order_by(func.random()).first()  #  --> returns 324
func.setseed(0)
session.query(MyModel.id).order_by(func.random()).first()  #  --> returns 736

正如您所看到的,即使重置种子后,结果仍然不同。但是,我找到了解决问题的方法,但我不明白为什么:

func.setseed(0)
session.query(MyModel.id).order_by(func.random(0.1)).first()  #  --> returns 547
func.setseed(0)
session.query(MyModel.id).order_by(func.random(0.1)).first()  #  --> returns 547

func.random参数是什么意思?

1 个答案:

答案 0 :(得分:0)

func.random实际上是sqlalchemy.sql.functions.GenericFunction,这是一种非特定于数据库的通用方法。

在MySQL数据库中,传递给随机函数的参数充当种子 - 这就是它返回相同值的原因。

您可以详细了解herehere