小编jno*_*jno的帖子

Python/SQLite3:无法提交 - 没有事务处于活动状态

我正在尝试使用Python(传统的,2.7)和SQLite(3)来编写书籍索引器.

代码归结为这一系列SQL语句:

'select count(*) from tag_dict' ()
/* [(30,)] */
'select count(*) from file_meta' ()
/* [(63613,)] */
'begin transaction' ()
'select id from archive where name=?' ('158326-158457.zip',)
/* [(20,)] */
'select id from file where name=? and archive=?' ('158328.fb2', 20)
/* [(122707,)] */
'delete from file_meta where file=?' (122707,)
'commit transaction' ()
# error: cannot commit - no transaction is active
Run Code Online (Sandbox Code Playgroud)

隔离级别为"DEFERRED"("EXCLUSIVE"并不是更好).

我试图使用connection.commit()而不是cursor.execute('commit') - 没有任何用处.

  • 当然,我已经搜索了stackoverflow和网络,但找到的答案是无关紧要的.
  • 出于性能原因,自动提交模式是不可接受的.
  • 我一次只使用唯一的数据库文件.
  • 我的代码在单线程中运行.
  • 所有SQL执行都是通过单个函数完成的,确保我一次只打开一个 …

python sqlite transactions commit

16
推荐指数
1
解决办法
1万
查看次数

如何删除 Fossil 中的存储库?

是的,我对 Fossil\xe2\x80\xa6 很陌生

\n\n

在我的实验过程中,我遇到了一个问题:fossil all info命令列出了这里曾经触及的所有存储库,包括那些已删除/删除/丢弃/删除/删除的存储库,显然失败了

\n\n
************* /home/jno/src/dropped-repo.fossil *****************************************\nSQLITE_CANTOPEN: cannot open file at line 36667 of [0c55d17973]\nSQLITE_CANTOPEN: os_unix.c:36667: (21) open(/home/jno/src/dropped-repo.fossil) - \nfossil: [/home/jno/src/dropped-repo.fossil]: unable to open database file\n
Run Code Online (Sandbox Code Playgroud)\n\n

是的,--dontstop旗帜让生活变得更轻松,但并不能解决问题。

\n\n

那么,问题是:如何正确删除存储库?

\n\n

到目前为止我发现的唯一方法是:

\n\n
    \n
  • fossil close
  • \n
  • 删除 repo 文件本身
  • \n
  • 运行sqlite3 ~/.fossildelete from global_config where name=\'\xe2\x80\xa6\'在所有提到该存储库的地方。
  • \n
\n\n

这看起来很难看。

\n\n

我看到一个new/init命令来创建一个存储库,但我看不到如何删除它。

\n\n

附言。Fossil的食谱:“不是有效的存储库” - 已删除的存储库(只是 …

fossil

3
推荐指数
1
解决办法
555
查看次数

标签 统计

commit ×1

fossil ×1

python ×1

sqlite ×1

transactions ×1