【问题标题】:Async csv.writer from database来自数据库的异步 csv.writer
【发布时间】:2012-09-10 23:46:43
【问题描述】:

我有一个 Python 脚本,可以将数据库中的数据提取到 CSV 文件中。我正在使用pyodbc 访问数据库并执行查询。我还使用 csv.writer 将查询输出到文件中:

with open(source_filename, 'w', newline='') as source_file:
    csv.writer(source_file, quoting=csv.QUOTE_NONNUMERIC).writerows(db_cursor)

因为脚本会输出数据库中的所有表,所以我想通过使用后台处理而不是一个接一个地来加快提取速度。有没有办法在 Python 中做到这一点?

我尝试使用多处理,但无法克服一些酸洗错误。

谢谢

【问题讨论】:

  • 你需要非常小心线程共享资源...

标签: python database asynchronous pyodbc


【解决方案1】:

Multithreading 是一种实现并行性的更轻量级的方法,但正如文档所述,“线程是一种用于解耦不依赖于顺序的任务的技术。”您需要知道在哪里您的依赖项是为了决定并行执行的操作。并行提交多个查询到由单个磁盘存储支持的数据库是否会比顺序提交更快地返回结果,这一点并不明显。

【讨论】:

    【解决方案2】:

       您必须创建多线程进程;原始进程启动一个新线程,该线程执行数据库访问和文件写入,而原始进程继续其业务。
    此外,与其创建多个访问数据库的进程来检索相同的数据,不如为此使用单个后台进程。它将更安全、更快、更容易调试。

    【讨论】:

      猜你喜欢
      • 2023-03-24
      • 1970-01-01
      • 2013-04-20
      • 2018-10-25
      • 2015-09-07
      • 1970-01-01
      • 2017-11-25
      • 2022-01-21
      • 1970-01-01
      相关资源
      最近更新 更多