|
1 | 1 | from sqlalchemy.orm import Session
|
2 |
| -from sqlalchemy.exc import SQLAlchemyError |
| 2 | +from sqlalchemy.exc import SQLAlchemyError, PendingRollbackError |
3 | 3 | import json
|
4 | 4 | import redis
|
5 | 5 | from db.models import I18nDict
|
@@ -39,10 +39,14 @@ def clear_game_data(db: Session, game_id: int):
|
39 | 39 | try:
|
40 | 40 | db.query(I18nDict).filter(I18nDict.game_id == game_id).delete()
|
41 | 41 | db.commit()
|
42 |
| - except SQLAlchemyError as e: |
| 42 | + except (SQLAlchemyError, PendingRollbackError) as e: |
43 | 43 | 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}") |
46 | 50 |
|
47 | 51 |
|
48 | 52 | 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
|
80 | 84 | db.commit()
|
81 | 85 | except SQLAlchemyError as e:
|
82 | 86 | 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}") |
85 | 93 | logger.info(f"Inserted {len(i18n_entries)} rows into i18n_dict, task finished.")
|
86 | 94 |
|
87 | 95 | pipe = redis_client.pipeline(transaction=False)
|
|
0 commit comments