SQLite DB Check and Update Script
Working with resources

Whenever possible,
anything that must be closed after using,
in this example the database connection,
it's good to wrap it in a with ... as, like this:

with sqlite3.connect(sqlite_file) as conn:
    cursor = conn.cursor()
    # ...


This way, conn will be automatically closed when exiting the block,
so it's impossible to forget to close it, therefore more robust.

Using enumerate

enumarate is really handy, but you're not using it to its full potential:


for i, e in enumerate(prod_list):
    prod_list[i] = prod_list[i].split('_')



Do you see the unused variable e? Since you have it, why not use it:

for index, item in enumerate(prod_list):
    prod_list[index] = item.split('_')


Naming

The posted code is filled with poor names, for example:


the main function
the c cursor variable -> cursor
the i loop variable for index -> index
the e loop variable for an element -> item


At the minimum, try to avoid single-letter names.

mm/dd/yyyy format

If at all possible, I'd recommend to use any other date format.

Comprehensive map of all countries in the world that use the MMDDYYYY format: