Затем естественно вне цикла после твоего кодаА это ты почему не прочитал.
df = pd.DataFrame({"tank_value": tank})
pprint(df)
Вот это вне тела все циклов. df = pd.read_excel('autodoor.xml')
keys = ['time', 'user_name', 'rfid_key', 'litre', 'type']
df[keys].to_sql(name, conn, if_exists='replace')
Все, у меня нет твоих данных полностью. Что бы подправить вот эти три строчки. Потому что возможно нужно будет методу read_excel например задать параметр sheet_name, возможно нужно будет индекс поставить False там например, можно даже подсет (колонки которые ты хочешь) выбирать выбирать на уровне чтения из файла сразу параметр usecols. и т.д. доки метода https://pandas.pydata.org/docs/reference/api/panda... И дальше не по одному значению а целый фрейм в базу. newdf[keys].to_sql(name, conn, if_exists='replace').
Ну и еще более менее правильное решение будет выглядеть так. Вот там где цикл ты собираешь tank_value в список. Предположим у тебя три значения это не важно, tank_value, another_value, some_value. Ты в свой список tank добавляешь вот так. tank.append((tank_value, another_value, some_value))
фрейм создаешь вот так. df = pd.DataFrame(data=tank_value, columns=['tank_value', 'another_value','some_value']). У тебя будет фрейм с тремя колонками.