【问题标题】:Can tqdm be used with Database Reads?tqdm 可以与数据库读取一起使用吗?
【发布时间】:2017-03-10 00:17:26
【问题描述】:

在从 SQL 数据库读取大型关系到 pandas 数据帧时,最好有一个进度条,因为元组的数量是静态已知的,并且可以估计 I/O 速率。看起来tqdm 模块有一个函数tqdm_pandas,它将报告列上映射函数的进度,但默认情况下调用它并没有像这样报告 I/O 进度的效果。是否可以使用tqdm 来制作调用pd.read_sql 的进度条?

【问题讨论】:

  • 恐怕不会,因为pandas 只是将查询发送到数据库并等待响应。在整个结果集到达之前没有中间反馈。

标签: python pandas tqdm


【解决方案1】:

编辑:答案可能具有误导性 - chunksize 对操作的数据库端没有影响。请参阅下面的 cmets。

您可以使用chunksize 参数执行以下操作:

chunks = pd.read_sql('SELECT * FROM table', con=conn, chunksize=100)

df = pd.DataFrame()
for chunk in tqdm(chunks):
    df = pd.concat([df, chunk])

我认为这也会使用更少的内存。

【讨论】:

  • 这不起作用,因为分块发生在 read_sql 完成加载整个集合之后。所有tqdm 会在这里做的是测量pd.concat 操作的进度。
  • 一一连接chunl效率非常低,一般应该避免。
猜你喜欢
  • 1970-01-01
  • 2018-09-12
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多