WebClub - Всероссийский Клуб Веб-разработчиков
WebClub.RU » Советы » Очистка данных

Очистка данных


Дата публикации: 14-04-2008

Легко заметить, что далеко не все полученные данные подходят для загрузки на SQL сервер. Например, дата должна быть в формате, "понятном" серверу. Не говоря уже о том, что bytes и status могут и не быть числами, тогда как в базе данных для них имеет смысл завести поля типа integer (для последующего суммирования).

Разберемся сначала с датой. Определим словарь с порядковыми номерами месяцев. Он нам будет нужен в дальнейшем:

 

month = {'Jan' : 1, 'Feb' : 2, 'Mar' : 3, 'Apr' : 4, 'May' : 5, 'Jun' : 6, 'Jul' : 7, 'Aug' : 8, 'Sep' : 9, 'Oct' : 10, 'Nov' : 11, 'Dec' : 12}

>>>> #разделяем на день, часы, минуты, секунды
...
>>>> datetime = date[1:].split(':')
>>>> datetime
['13/Sep/2002', '14', '19', '58']

В принципе, день можно оставить как есть. MS SQL Server понимает такой формат. Тогда окончательная дата будет:

 

 sql_date = '%s %s:%s:%s' % (datetime[0], datetime[1], datetime[2], datetime[3])
>>>> sql_date
'13/Sep/2002 14:19:58'

Можно определить другой формат, например:

 

 #получаем день, месяц, год
...
>>>> day = datetime[0].split('/')
>>>> day
['13', 'Sep', '2002']
>>>> #теперь конструируем дату
...
>>>> sql_date = '%s-%s-%s %s:%s:%s' % (day[2], month[day[1]], day[0], datetime[1], datetime[2], datet
ime[3])
>>>> sql_date
'2002-9-13 14:19:58'

Теперь проверим, действительно ли bytes и status содержат целые числа. Это лучше всего сделать с помощью конструкции try/except:


try:
    bytes = int(bytes)
except:
    bytes = 0

Еще одна проблема может возникнуть с содержанием запроса клиента. Дело в том, что строка запроса может быть очень длинной (например, при попытке взлома веб-сервера злоумышленник может сформировать такую строку, пытаясь воспользоваться уязвимостью переполнения буфера). Имеет смысл ограничить ее разумной величиной, например 256 символов:


if len(user_request) > 255:
    user_request = user_request[:255]

Конечно, если вы хотите анализировать попытки взлома и некорректные запросы, нужно оставить все как есть, задав соответствующему полю таблицы нужный формат.


Популярное

Не так давно в сети появился новый сервис, под названием Dead Man Zero. Этот сервис сделал...
Рынок социальных площадок уже давно стал стабильным. Несмотря на то, что время от времени...
Artisteer 4 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Октябрь 2018 (14)
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)
Ноябрь 2015 (1)

Карта сайта: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41

Друзья сайта



Случайная цитата

Alan J. Perlis:

"FORTRAN — это не цветок, а сорняк: он вынослив, иногда расцветает и произрастает в каждом компьютере."

Опрос

Как Вам новый дизайн сайта?

Отлично
Неплохо
Нормальный
Ужасно