问题:使用sqlalchemy如何随机获取数据?
解决:使用self.db.execute解析原生sql
方法:
user = self.db.execute(
"""SELECT * FROM users AS t1 JOIN(
SELECT ROUND(
RAND() * ((SELECT MAX(id) FROM users)-(SELECT MIN(id) FROM users))
+(SELECT MIN(id) FROM users)
) AS rid
) AS t2
WHERE t1.id >= t2.rid
ORDER BY t1.id LIMIT 1;""").fetchone()
注:只能产生一条随机数据,产生多条时可使用fechall(),但是是顺序下去的
products = self.db.execute(
"select id from products order by rand() limit 10;").fetchall()
这种方法是可以产生多条数据的
考虑到此方法效率不高,建议使用循环调用方法一
参考:
http://www.mantutu.com/index.php/mysql/271.html