GOOGLE ADS

суббота, 30 апреля 2022 г.

Как правильно вставить эти значения в базу данных?

У меня есть имя файла log.txt

Структура у него примерно такая:

2022-04-28 22:33:02,290\\INFO\\Database connection established
2022-04-28 22:33:07,470\\INFO\\Files concatenation
2022-04-28 22:33:09,708\\INFO\\Table xxx_xxx created

Я хочу отправить это в базу данных, к которой я ранее подключался.

with open("test.log",'r') as data_file:
values = [line.split("\\") for line in data_file]
engine.execute('INSERT INTO control (log_date, debugType, messa) VALUES (%s, %s, %s)', values)

Когда я печатаю значения, которые будут переданы в базу данных, это выглядит так:

[['2022-04-28 22:33:02,290', '', 'INFO', '', 'Database connection established\n'], ['2022-04-28 22:33:07,470', '', 'DEBUG', '', 'Files concatenation\n'], ['2022-04-28 22:33:09,708', '', 'DEBUG', '', 'Table xxx_xxx created\n'],...]

Прежде всего, я хочу исключить значение, которое следует за запятой после метки времени (например, в первой строке: '2022-04-28 22:33:02,290', я хочу удалить ,290.

Я также хочу избавиться от пустых строк, где был \\.

Можете вы помочь мне?


Решение проблемы

Кажется, что в вашем файле есть дополнительные символы, поэтому вы получаете эти пустые строки. Наивное и жадное решение:

final_list = []
with open("test.log",'r') as data_file:
for line in data_file:
line_list = line.rstrip('\n').split("\\")
line_list[0] = line_list[0][:-4]
final_list = list(filter(lambda l: l!= '', line_list))
final_list.append(final_line)

Если у вас есть список (вы завершили чтение и анализ списка), вы можете применить те же самые вещи:

  • Чтобы удалить '', просто выполните фильтрацию в каждом списке.

  • final_list = [ list(filter(lambda l: l!= '', inside_l)) for inside_l in whole_list]

  • чтобы удалить последние три элемента из строки, просто выполните string[:-4] итерацию по всему списку, получите первый элемент и примените нарезку

  • for inside_list in final_list:
    inside_list[0] = inside_list[0][:-4]

    Комментариев нет:

    Отправить комментарий

    Laravel Datatable addColumn returns ID of one record only

    Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...