From 003c195946c27685703ad45fdfd258d538d8c93e Mon Sep 17 00:00:00 2001 From: xxyzz Date: Mon, 24 Jun 2024 11:55:04 +0800 Subject: [PATCH] Use connection context manager in `get_entity_data()` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is a `database is locked` in the ru edition log from page "হৃদয়": `LUA error in #invoke('Wdl-bn', 'all', 'L301993') parent None` Use context manager to automatically commit should fix this racing bug. --- src/wikitextprocessor/wikidata.py | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/wikitextprocessor/wikidata.py b/src/wikitextprocessor/wikidata.py index 63d1c1cd..91d67b75 100644 --- a/src/wikitextprocessor/wikidata.py +++ b/src/wikitextprocessor/wikidata.py @@ -367,19 +367,20 @@ def get_entity_data( result = r.json() for _, entity_data in result.get("entities", {}).items(): entity_data["schemaVersion"] = 2 - insert_item( - wtp, - WikiDataItem( - item_id=item_id, - label=entity_data.get("labels", {}) - .get(wtp.lang_code, {}) - .get("value", ""), - description=entity_data.get("descriptions", {}) - .get(wtp.lang_code, {}) - .get("value", ""), - entity_data=json.dumps(entity_data, ensure_ascii=False), - ), - ) + with wtp.db_conn: + insert_item( + wtp, + WikiDataItem( + item_id=item_id, + label=entity_data.get("labels", {}) + .get(wtp.lang_code, {}) + .get("value", ""), + description=entity_data.get("descriptions", {}) + .get(wtp.lang_code, {}) + .get("value", ""), + entity_data=json.dumps(entity_data, ensure_ascii=False), + ), + ) return entity_data return None