Skip to content

Commit 34b3629

Browse files
authored
Update __init__.py (#47)
Fix: evitar uso recursivo de cursores en SQLite usando cursores locales
1 parent a71cea5 commit 34b3629

1 file changed

Lines changed: 15 additions & 10 deletions

File tree

satcfdi/catalogs/__init__.py

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,21 @@
88

99
db_file = os.path.join(current_dir, "catalogs.db")
1010
conn = sqlite3.connect(db_file, check_same_thread=False)
11-
c = conn.cursor()
1211

1312

1413
def select(catalog_name, key):
15-
c.execute(f"SELECT value FROM {catalog_name} WHERE key = ?", (pickle.dumps(key),))
16-
if ds := c.fetchone():
17-
return pickle.loads(ds[0])
14+
with conn:
15+
c = conn.cursor()
16+
c.execute(f"SELECT value FROM {catalog_name} WHERE key = ?", (pickle.dumps(key),))
17+
if ds := c.fetchone():
18+
return pickle.loads(ds[0])
1819

1920

2021
def select_all(catalog_name):
21-
c.execute(f"SELECT key, value FROM {catalog_name}")
22-
return {pickle.loads(k): pickle.loads(v) for k, v in c.fetchall()}
22+
with conn:
23+
c = conn.cursor()
24+
c.execute(f"SELECT key, value FROM {catalog_name}")
25+
return {pickle.loads(k): pickle.loads(v) for k, v in c.fetchall()}
2326

2427

2528
def catalog_code(catalog_name, key, index=None):
@@ -60,8 +63,10 @@ def split_at_upper_itr(word: str):
6063

6164

6265
def trans(k):
63-
c.execute(f"SELECT value FROM Translations WHERE key = ?", (k,))
64-
if res := c.fetchone():
65-
return res[0]
66+
with conn:
67+
c = conn.cursor()
68+
c.execute(f"SELECT value FROM Translations WHERE key = ?", (k,))
69+
if res := c.fetchone():
70+
return res[0]
6671

67-
return split_at_upper(k)
72+
return split_at_upper(k)

0 commit comments

Comments
 (0)