Меню
Контакты
107023, Москва, пл. Журавлёва, 10с3, подъезд 31, офис 309
Пн-Пт: с 9-00 до 17-00   Сб-вс: выходной
Интернет-магазин
сетевого оборудования
Москва +7 (495) 103-41-03 +7 (915) 420-28-94
107023, Москва, пл. Журавлёва, 10с3, подъезд 31, офис 309
Пн-Пт: с 9-00 до 17-00   Сб-вс: выходной
Заказать звонок

Считайте деньги с помощью Pythonix

 23 Сен 2011    MikroTik, Scripts

В этой статье мы напишем скрипт с функцией добавления тарифа в базу данных. Pythonix из тарифов будет получать данные о скорости и создавать в устройствах Mikrotik Routerboard (Mikrotik RouterBoard 1200, Mikrotik RouterBoard 433AH, Mikrotik RouterBoard 750G) правила шейпера для пользователей.

Скрипт:

#!/usr/bin/env python

# -*- coding: utf_8 -*-

import MySQLdb

import mysql_db, os, sys, time

def f_new_tarif():

print "\033[33m ---------------------\033[0m"

print "\033[33m| Добавить новый тариф |\033[0m"

print "\033[33m ---------------------\033[0m"

time.sleep(1)

os.system('clear')

while True:

name_tarif = raw_input("Введите название тарифа: ")

if not name_tarif:

print "\033[31m| Вы не ввели название тарифа |\033[0m"

time.sleep(1)

else:

break

while True:

price_tarif = raw_input("Введите стоимость тарифа: ")

if not price_tarif:

print "\033[31m| Вы не ввели стоимость тарифа |\033[0m"

time.sleep(1)

else:

break

while True:

speed_tarif = raw_input("Введите скорость для тарифа: ")

if not speed_tarif:

print "\033[31m| Вы не ввели скорость для тарифа |\033[0m"

time.sleep(1)

else:

break

cur = mysql_db.db.cursor()

sql = "SELECT id FROM tarifs WHERE name_tarif = '%s'" % (name_tarif)

res = cur.execute(sql)

cur.close()

r = int(res)

if r > 0:

print "Это название уже существует"

else:

print "Тариф добавлен"

cur = mysql_db.db.cursor()

sql = ("INSERT INTO tarifs (name_tarif, price_tarif, speed_tarif) VALUES ('%s', '%s', '%s')" % (name_tarif, price_tarif, speed_tarif))

cur.execute(sql)

cur.close()

if raw_input("Добавить новый тариф? y/n: ")!="y":

return()

else:

f_new_tarif()

Разбираем скрипт:

Подключаем необходимые модули:

#!/usr/bin/env python

# -*- coding: utf_8 -*-

import MySQLdb

import mysql_db, os, sys, time

Создаем функцию с именем f_new_tarif:

def f_new_tarif():

Выводим сообщение "Добавить новый тариф":

print "\033[33m ---------------------\033[0m"

print "\033[33m| Добавить новый тариф |\033[0m"

print "\033[33m ---------------------\033[0m"

time.sleep(1)

Выполняем очистку экрана:

os.system('clear')

Запускаем цикл, в котором администратору будет предложено ввести название тарифа, например, unlim_10. Данные, введенные администратором, будут добавлены в переменную name_tarif с помощью функции raw_input. Если администратор не ввел название тарифа, выведется сообщение "Вы не ввели название тарифа", и администратору будет предложено сделать это еще раз.

while True:

name_tarif = raw_input("Введите название тарифа: ")

if not name_tarif:

print "\033[31m| Вы не ввели название тарифа |\033[0m"

time.sleep(1)

else:

break

Это действие имеет схожесть с предыдущим. Создается переменная price_tarif, в которую будут занесены данные, введенные администратором. Это значение ежемесячно будет вычитаться из баланса пользователя.

while True:

price_tarif = raw_input("Введите стоимость тарифа: ")

if not price_tarif:

print "\033[31m| Вы не ввели стоимость тарифа |\033[0m"

time.sleep(1)

else:

break

Следующее действие также похожее. В нем создается переменная speed_tarif, в которую будут занесены данные о скорости, предоставляемой пользователям для данного тарифа.

while True:

speed_tarif = raw_input("Введите скорость для тарифа: ")

if not speed_tarif:

print "\033[31m| Вы не ввели скорость для тарифа |\033[0m"

time.sleep(1)

else:

break

Извлекаем из базы данные, где в поле name_tarif есть запись с введенным названием тарифа. Результат заносим в переменную r:

cur = mysql_db.db.cursor()

sql = "SELECT id FROM tarifs WHERE name_tarif = '%s'" % (name_tarif)

res = cur.execute(sql)

cur.close()

r = int(res)

Скрипт:

Выполняем проверку: если переменная r больше нуля, значит в базе уже существует похожее имя, и выводится соответствующее сообщение. Если похожего названия не существует, то будет выполнено добавление данных в базу.

if r > 0:

print "Это название уже существует"

else:

print "Тариф добавлен"

cur = mysql_db.db.cursor()

sql = ("INSERT INTO tarifs (name_tarif, price_tarif, speed_tarif) VALUES ('%s', '%s', '%s')" % (name_tarif, price_tarif, speed_tarif))

cur.execute(sql)

cur.close()

Это действие предложит добавить еще один тариф. Если администратор не согласен, то функция закончит свою работу, если нажмет y то будет вызвана функция f_new_tarif()

if raw_input("Добавить новый тариф? y/n: ")!="y":

return()

else:

f_new_tarif()

 

Евгений Рудченко специально для ASP24.