【问题标题】:Writing in SQLite multiple Threads in Python用 Python 编写 SQLite 多线程
【发布时间】:2023-03-31 19:45:02
【问题描述】:

我有一个 sqlite3 数据库,我想从多个线程中写入。我有多个想法,但我不确定应该实施哪个。

  1. 创建多个连接,检测数据库是否被锁定并放弃
  2. 使用一个连接并尝试使用序列化连接(python 中似乎没有实现)
  3. 有一个带有单个连接的后台进程,它收集来自所有线程的查询,然后代表它们执行它们
  4. 忘记 SQlite 并使用 Postgresql 之类的东西

这些不同方法的进步是什么,哪些最有可能取得成果?还有其他可能吗?

【问题讨论】:

    标签: python multithreading postgresql sqlite


    【解决方案1】:

    尝试使用https://pypi.python.org/pypi/sqlitedict 一个围绕 Python 的 sqlite3 数据库的轻量级包装器,具有类 dict 接口和多线程访问支持。 但请考虑“并发请求仍在内部序列化,因此这种“多线程支持”不会给您带来任何性能优势。它是 Python 中 sqlite 限制的一种解决方法。”

    PostgreSQL、MySQL 等为您一次连接多个连接提供更好的性能

    【讨论】:

      【解决方案2】:

      我之前用过方法一。它是最简单的编码。由于该项目有一个小型网站,因此每次查询只需几毫秒。所有用户的请求都可以得到及时处理。

      我之前也用过方法3。因为当查询需要更长的时间时,最好将查询排队,因为频繁的“检测和等待”在这里没有意义。并且需要一个经典的消费者-生产者模型。编码需要更多时间。

      但是如果查询真的很重且频繁。我建议查看其他数据库,例如 MS SQL/MySQL。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-24
        • 1970-01-01
        相关资源
        最近更新 更多