1
0
Fork 0
mirror of https://github.com/qurator-spk/modstool.git synced 2025-08-28 19:09:53 +02:00

🐛 Give a useful error message when input is empty

This commit is contained in:
Mike Gerber 2025-08-21 17:32:51 +02:00
parent a812a894dd
commit 269fbf04cb
3 changed files with 20 additions and 0 deletions

View file

@ -3,6 +3,7 @@ import contextlib
import csv import csv
import os import os
import sqlite3 import sqlite3
import sys
import warnings import warnings
from operator import attrgetter from operator import attrgetter
from typing import List from typing import List
@ -19,6 +20,7 @@ from .lib import (
insert_into_db, insert_into_db,
ns, ns,
sorted_groupby, sorted_groupby,
sqlite3_table_exists,
) )
@ -239,6 +241,11 @@ def process(alto_files: List[str], output_file: str):
traceback.print_exc() traceback.print_exc()
# Check if table exists
if not sqlite3_table_exists(con, "alto_info"):
logger.error("Table alto_info does not exist, empty input?")
sys.exit(1)
# Convert the alto_info SQL to a pandas DataFrame # Convert the alto_info SQL to a pandas DataFrame
logger.info("Writing DataFrame to {}".format(output_file)) logger.info("Writing DataFrame to {}".format(output_file))
convert_db_to_parquet(con, "alto_info", "alto_file", output_file) convert_db_to_parquet(con, "alto_info", "alto_file", output_file)

View file

@ -469,6 +469,12 @@ def convert_db_to_parquet(con, table, index_col, output_file):
df.to_parquet(output_file) df.to_parquet(output_file)
def sqlite3_table_exists(con, table):
"""Check if table exists."""
cur = con.execute("SELECT 1 FROM pragma_table_info(?) LIMIT 1", (table,))
return cur.fetchone() is not None
def sqlite3_column_exists(con, table, col): def sqlite3_column_exists(con, table, col):
"""Check if column col exists in table.""" """Check if column col exists in table."""
cur = con.execute( cur = con.execute(

View file

@ -3,6 +3,7 @@ import contextlib
import csv import csv
import os import os
import sqlite3 import sqlite3
import sys
import warnings import warnings
from operator import attrgetter from operator import attrgetter
from typing import Dict, List from typing import Dict, List
@ -21,6 +22,7 @@ from .lib import (
ns, ns,
sorted_groupby, sorted_groupby,
sqlite3_column_exists, sqlite3_column_exists,
sqlite3_table_exists,
) )
@ -653,6 +655,11 @@ def process(
except Exception: except Exception:
logger.exception("Exception in {}".format(mets_file)) logger.exception("Exception in {}".format(mets_file))
# Check if table exists
if not sqlite3_table_exists(con, "mods_info"):
logger.error("Table mods_info does not exist, empty input?")
sys.exit(1)
logger.info("Writing DataFrame to {}".format(output_file)) logger.info("Writing DataFrame to {}".format(output_file))
considered_indexes = ("recordInfo_recordIdentifier", "recordIdentifier-zdb") considered_indexes = ("recordInfo_recordIdentifier", "recordIdentifier-zdb")