Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
"""
logger.info("Fetching rows")
logger.debug(f"Fetching:\n\n{select_query}\n\nwith parameters:\n\n"
f"{parameters}\n\nagainst\n\n{conn}")
helper = DB_HELPER_FACTORY.from_conn(conn)
with helper.cursor(conn) as cursor:
# Run query
try:
cursor.execute(select_query, parameters)
except helper.sql_exceptions as exc:
# Even though we haven't modified data, we have to rollback to
# clear the failed transaction before any others can be started.
conn.rollback()
msg = f"SQL query raised an error.\n\n{select_query}\n\n{exc}\n"
raise ETLHelperExtractError(msg)
# Set row factory
create_row = row_factory(cursor)
# Parse results
first_pass = True
while True:
rows = cursor.fetchmany(CHUNKSIZE)
# No more rows to process
if not rows:
if first_pass:
msg = "No rows returned"
else:
if cursor.rowcount == -1:
# SQLite3 drive doesn't support row count (always -1)