Skip to content

Commit f805fc9

Browse files
committed
fix #18
1 parent eebe2c2 commit f805fc9

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

db/crud.py

+14-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from sqlalchemy.orm import Session
2-
from sqlalchemy.exc import SQLAlchemyError
2+
from sqlalchemy.exc import SQLAlchemyError, PendingRollbackError
33
import json
44
import redis
55
from db.models import I18nDict
@@ -39,10 +39,14 @@ def clear_game_data(db: Session, game_id: int):
3939
try:
4040
db.query(I18nDict).filter(I18nDict.game_id == game_id).delete()
4141
db.commit()
42-
except SQLAlchemyError as e:
42+
except (SQLAlchemyError, PendingRollbackError) as e:
4343
logger.error(f"Error clearing game data: {e}")
44-
db.rollback()
45-
raise RuntimeError("Error clearing game data")
44+
try:
45+
db.rollback()
46+
db.query(I18nDict).filter(I18nDict.game_id == game_id).delete()
47+
db.commit()
48+
except SQLAlchemyError as e:
49+
raise RuntimeError(f"Error clearing game data: {e}")
4650

4751

4852
def insert_localization_data(db: Session, redis_client: redis.Redis, game_id: int,
@@ -80,8 +84,12 @@ def insert_localization_data(db: Session, redis_client: redis.Redis, game_id: in
8084
db.commit()
8185
except SQLAlchemyError as e:
8286
logger.error(f"Error inserting localization data: {e}")
83-
db.rollback()
84-
raise RuntimeError("Error inserting localization data")
87+
try:
88+
db.rollback()
89+
db.add(entry)
90+
db.commit()
91+
except SQLAlchemyError as e:
92+
raise RuntimeError(f"Error inserting localization data: {e}")
8593
logger.info(f"Inserted {len(i18n_entries)} rows into i18n_dict, task finished.")
8694

8795
pipe = redis_client.pipeline(transaction=False)

0 commit comments

Comments
 (0)