首页 > 解决方案 > sqlite 数据库中的洗牌值给出无

问题描述

sqlalchemy我尝试使用但使用 SQL 查询来洗牌 sqlite 数据库中列的值。

我有一个mtr_cdr带有列的表idx。如果我有

conn = engine.connect()
conn.execute('SELECT idx FROM mtr_cdr').fetchall()[:3]

我得到了正确的值:[(3,),(3,),(3,)]在这种情况下,它们是列中的顶部值(此时,idx列是有序的,并且有多个行对应于相同的idx)。

但是,如果我尝试:

conn.execute('SELECT idx FROM mtr_cdr ORDER BY RANDOM()').fetchall()[:3]

我明白了[(None,),(None,),(None,)

如果有帮助,我正在使用 sqlalchemy 1.2.9 版。

哪种方法可以给我正确的结果,但可以扩展到大型数据库?在完整的数据库中,我预计大约有 1 亿多行,而且我听说ORDER BY RANDOM()(如果我能让它工作的话)会很慢......

标签: pythonsqlitesqlalchemy

解决方案


推荐阅读