test_sottocorpora.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. # %%
  2. import sqlite3
  3. import pandas as pd
  4. import dtale
  5. import unicodedata
  6. #from simple_query_test_pandas import ricercaforme, ricercalemmi, ricercaformelemmi, ricercalemmiforme, interpreter
  7. #from test_occorrenzario_pandas import findtexts, findcontexts, findbib, contestimultipli, get_tables_occ
  8. #funzione di definizione sottocorpus
  9. def definiscisottocorpus(path, table, conditions=None):
  10. conn = sqlite3.connect(f"file:{path}/bibliografia/BiblioTLIO.db?mode=ro", uri=True)
  11. c = conn.cursor()
  12. query = "SELECT sigla FROM datibib WHERE 1"
  13. if conditions:
  14. for key, value in conditions.items():
  15. if key == "[Anno iniziale]":
  16. query += f" AND {key} >= {value}"
  17. print(query)
  18. elif key == "[Anno finale]":
  19. query += f" AND {key} <= {value}"
  20. print(query)
  21. else:
  22. if isinstance(value, list):
  23. query += " AND {} IN ({})".format(key, ",".join(["'{}'".format(v) for v in value]))
  24. else:
  25. query += " AND {}='{}'".format(key, value)
  26. print(query)
  27. c.execute(query)
  28. results = c.fetchall()
  29. conn.close()
  30. sottocorpus = [result[0] for result in results]
  31. return sottocorpus
  32. # %%
  33. path = "/Users/leonardocanova/Library/CloudStorage/OneDrive-ConsiglioNazionaledelleRicerche/TIGRO/Ricerche/db/first_db"
  34. conditions = {"IQ": "TS", "[Titolo Abbreviato]": ["Simintendi, a. 1333 (prat.)", "Albertano volg., 1275 (fior.)"]}
  35. chronoconditions = {"[Anno iniziale]": 1275, "[Anno finale]": 1276}
  36. conditions2 = {"[Autore]": ["Dante Alighieri", "Boccaccio, Giovanni"]}
  37. siglas = definiscisottocorpus(path,"datibib", conditions2)
  38. print(siglas)
  39. # %%