Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Помогите чайнику написать скрипт, Bash (Python) + MySQL [Тема закрыта]  (Прочитано 1803 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Vlad.V

  • Автор темы
  • Активист
  • *
  • Сообщений: 478
    • Просмотр профиля
Всем доброго времени суток! Раньше писал только простенькие скрипты, теперь нужно написать более серьезный скрипт и я не знаю с какой стороны к нему подойти. Буду благодарен за любой совет или помощь! Постараюсь кратко описать что должен делать скрипт.
Есть 2-е таблицы в MySQL, с ними работает АТС Asterisk, таблица tc (первая) содержит информацию о номерах телефонов и времени контроля вызовов (время контроля нужно для того, чтобы скрипт знал когда ему брать данные с другой таблицы td), например, 555-34-32 проконтролировать в 16:30; 445-65-78 проконтролировать в 18:20.
Во вторую таблицу, td, записывается информация о времени звонка, например, 555-34-32 NULL, 445-65-78 18:26

Т.е. Выходит что первый номер (555-34-32) не звонил.
Скрипт должен вытаскивать номер телефона и время контроля с таблицы tc, если контрольное время меньше или равно реальному времени проверять по номеру телефона таблицу td на наличие времени звонка, если время стоит — хорошо, если нет — выводит сообщение что звонка не было.

Вот так все запутано. Подскажите как лучше такое написать? В Баше или может Питон начинать учить?
Буду благодарен за любой совет, пример или ссылку на полезную инфу, заранее спасибо! 
« Последнее редактирование: 20 Января 2013, 00:59:32 от Vlad.V »

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1694
  • А чего вы так смотрите?..
    • Просмотр профиля
Не совсем понятно как ассоциированы таблицы. Если судить по описанию, то простейший запрос должен дать результат:
SELECT * FROM tc, td WHERE номер_из_tc = номер_из_td AND время_разговора IS NOT NULL
Но лучше узнать информацию по таблицам, какие в них столбцы.
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн Vlad.V

  • Автор темы
  • Активист
  • *
  • Сообщений: 478
    • Просмотр профиля
Спасибо!

таблица tc

+----+---------------+------------------+-----------+-----------+
| id | phone         | object           | toc_am    | toc_pm    |
+----+---------------+------------------+-----------+-----------+
|  2 | 110           | Тест             | 08:40:00  | 22:00:00  |
+----+---------------+------------------+-----------+-----------+

toc - time of check (время в которое нужно совершить проверку таблицы tc, ячейки toc_am|pm в зависимости от времени дня с таблицей td, ячейкой tor_am|pm (time of report), также в зависимости от времени дня)

таблица td

+----+-------+----------+--------+----------+
| id | phone | object   | tor_am | tor_pm   |
+----+-------+----------+--------+----------+
|  1 | 110   | NULL     | NULL   | 20:42:00 |
| 19 | 110   | NULL     | NULL   | 13:11:00 |
| 20 | 110   | Тест     | NULL   | 23:41:00 |
+----+-------+----------+--------+----------+

Я так понял, что Ваш запрос должен показать пустая ячейка, в моем случае tor_*, или нет. А для моей задумки мне хватит возможностей Баша?

И еще один вопросик созрел, подскажите как можно заставить выполнять скрипт до 12:59 одно, а после другое, в моем случае это разные ячейки _am , _pm.
 

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1694
  • А чего вы так смотрите?..
    • Просмотр профиля
Vlad.V, хоть убей, но не вижу связи между таблицами. Если я правильно понял, то, при совершении вызова, в tc пишется номер (phone) и время, в которое он "позвонил". В td пишется номер и длительность разговора. Так? Или я совсем упрограммировался? :)

Опиши что к чему, но только подробнее. А там, глядишь, и разберемся, может даже и без поллитры.
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн Vlad.V

  • Автор темы
  • Активист
  • *
  • Сообщений: 478
    • Просмотр профиля
Добрый день Protopopulus! Еще раз спасибо, что пытаетесь помочь.

Таблица tc (table constant), в нее внесены уже имеющиеся данные такие как: phone (номер телефона), object (объект, например, офис1. Который соответствует номеру указанному в колонке phone ), toc_am (time of check - время в которое должна выполняться проверка звонка, был он или нет. аm - до полудня), toc_pm (аналогично, только pm - после полудня). Т.е. с таблицы tc скрипт должен брать информацию о том когда проверить был ли звонок с номера (номер тоже скрипт берет с этой таблицы) или нет

Внешний вид tc (еще раз)
(Нажмите, чтобы показать/скрыть)

Таблица td (table dynamic), в нее записываются информация о звонках. Записываются следующие данные:
phone (номер телефона);
object (аналогично базе tc, только для записи в td, АТС сравнивает номера абонентов и подставляет значение с tc);
tor_am (time of report), время в которое был сделан звонок(доклад), фактическое время. Т.е. в нем либо отбивается время звонка либо оно NULL; Соответственно am - до полудня;
tor_pm, аналогично, только pm;

Внешний вид td (для наглядности)
(Нажмите, чтобы показать/скрыть)

Теперь постараюсь объяснить что мне нужно с этого получить. Проще говоря нужен скрипт который, циклически будет заходить в tc вытягивать с нее данные, построчно, и когда время в поле toc будет <= реального времени, делать запрос в td на наличие времени в колонке tor. Если tor = NULL,тогда АТС делает обратный вызов к номеру (phone). (с АТС я сам разберусь). Если не NULL, тогда делаем все тоже, но уже с другой строкой с tc.

Тут опишу (по пунктам) как это видит мой воспаленный разум:

(Нажмите, чтобы показать/скрыть)

Оффлайн Vlad.V

  • Автор темы
  • Активист
  • *
  • Сообщений: 478
    • Просмотр профиля
Всем, спасибо, тема закрыта.

 

Страница сгенерирована за 0.031 секунд. Запросов: 25.