【问题标题】:Commit data in sqlite3 python在 sqlite3 python 中提交数据
【发布时间】:2014-05-18 12:27:45
【问题描述】:

您好,我有这个愚蠢的问题,但我想确定一下。我创建了一个基于 sqlite3 的数据库。我在 1000k 操作后触发了 commit(),所以我不会有太多的磁盘 I/O。当我在数据库中查找数据时,select查询是只在数据库文件中搜索还是会检查未提交的数据?

谢谢。

【问题讨论】:

标签: database sqlite


【解决方案1】:

事务允许关于数据库的其他用户的隔离和原子性。 您所做的任何更改都会立即在您自己的连接中可见。

【讨论】:

  • 所以未提交的数据在我的程序中是可见的。如果数据库是公开的,其他人不会看到这些数据,对吧?
  • 虽然它们对使用数据库的其他程序不可见,但它们仅对发出 INSERT 语句的同一连接内的程序可见。您自己程序中的其他同时连接不会看到数据。如果您只使用单个数据库连接,这不是问题,但如果您使用多个连接,则可能会造成混淆。
【解决方案2】:

如果您使用与写入数据库相同的 SQLite 连接进行读取,则写入的效果将对读者可见,正如预期的那样。

如果您使用 不同的 连接(即使在单个线程中)进行读取和写入,读者将不会看到对数据库的未提交写入,除非您付出相当大的努力来允许它这样做。

【讨论】:

    猜你喜欢
    • 2013-09-02
    • 2021-03-24
    • 1970-01-01
    • 2019-01-25
    • 2015-10-16
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多