1

我想从 MySQL 表中一次选择一条记录。我在这里找到了关于 SO 的类似帖子 -

如何一一选择记录而不重复

但是,在我的情况下,表大小不固定,数据不断添加到表中,我想从该表中一次选择一条记录。另外,我正在使用 python 连接到 mysql 数据库并对每条记录进行处理。任何指针?

PS:表的大小非常大,因此每次都无法计算表中的记录数

4

1 回答 1

1

此功能未内置在 SQL 中。

如果表上有一个密集的、递增的索引列,那么您只需执行以下操作:

i = 0
while True:
    # your usual select here, but with "and MyIndexColumn = %d' % (i,)

对于某些数据库,无论您是否需要,都内置了这样一个列,通常称为“RowID”或“Row ID”;如果没有,您始终可以显式添加这样的列。

如果可以跳过这些值(通常它们可以,例如,如果没有其他原因,只是因为有人可以从中间删除一行),那么您当然必须能够处理返回 0 行的选择。

唯一的问题是没有办法告诉你什么时候完成。但这在您最初的问题陈述中是固有的:不断添加数据,而您事先不知道它的大小,那么您怎么能呢?如果您需要知道生产者何时完成,它必须以某种方式(可能通过数据库中的另一个表)为您提供它创建的最高 rowid。

于 2012-06-15T21:02:37.297 回答