mirror of
https://github.com/simonw/sqlite-utils.git
synced 2026-07-26 10:54:32 +02:00
delete_where() now commits inside a transaction, refs #815
This commit is contained in:
parent
2026087a72
commit
bf133b4825
2 changed files with 18 additions and 1 deletions
|
|
@ -2773,7 +2773,8 @@ class Table(Queryable):
|
|||
sql = "delete from [{}]".format(self.name)
|
||||
if where is not None:
|
||||
sql += " where " + where
|
||||
self.db.execute(sql, where_args or [])
|
||||
with self.db.conn:
|
||||
self.db.execute(sql, where_args or [])
|
||||
if analyze:
|
||||
self.analyze()
|
||||
return self
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
import sqlite_utils
|
||||
|
||||
|
||||
def test_delete_rowid_table(fresh_db):
|
||||
table = fresh_db["table"]
|
||||
table.insert({"foo": 1}).last_pk
|
||||
|
|
@ -32,6 +35,19 @@ def test_delete_where_all(fresh_db):
|
|||
assert table.count == 0
|
||||
|
||||
|
||||
def test_delete_where_commits(tmpdir):
|
||||
path = str(tmpdir / "test.db")
|
||||
db = sqlite_utils.Database(path)
|
||||
db["table"].insert_all([{"id": i} for i in range(5)], pk="id")
|
||||
db["table"].delete_where("id > ?", [2])
|
||||
assert not db.conn.in_transaction
|
||||
db.close()
|
||||
|
||||
reopened_db = sqlite_utils.Database(path)
|
||||
assert [row["id"] for row in reopened_db["table"].rows] == [0, 1, 2]
|
||||
reopened_db.close()
|
||||
|
||||
|
||||
def test_delete_where_analyze(fresh_db):
|
||||
table = fresh_db["table"]
|
||||
table.insert_all(({"id": i, "i": i} for i in range(10)), pk="id")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue