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 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Июль 2025 (1)
Август 2024 (1)
Май 2024 (1)
Апрель 2024 (1)
Октябрь 2018 (14)
Февраль 2017 (3)

Карта сайта: 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

Друзья сайта



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

Неизвестный автор:

"Как видно, совершенство достигается не тогда, когда уже нечего прибавить, но когда уже ничего нельзя отнять."

Опрос

Какой аудио плеер Вы используете?

Winamp
Light Alloy
foobar2000
Apollo
AIMP
1by1
iTunes
jetAudio
Другой...