Gastello007

 
<<< Back

Функция getObjectsByClass для Phyton3 ver.2 Beta (обновил)

Использование функции getObjectsByClass в сценариях написанных на Phyton3

Заметка как всегда для меня любимого), что бы не забыл.
Потребовалось мне для саморазвития и изучения питона воспользоваться благами функции getObjectsByClass да бы не писать много воды в коде. Но на данный момент данная функция в Majordomo для питона не реализована к сожалению. Пришлось немого поучиться и пообщаться с умными людьми спасибо как всегда им особенно @Tarasfrompir V из телеги.
И так поехали в файл mjdm.py после

def gg(property):
    result = getGlobal(property)
    return result

Вставляем следюущее

def getObjectsByClass (class_name):

    con = 0
    result = ""
    subClass_tuple=()
    try:
        con = mdb.connect(host='192.168.1.86', user='majordomo', passwd='1985', db='db_terminal')
        cur = con.cursor()
        cur.execute("SELECT ID,SUB_LIST  FROM classes WHERE TITLE = '" + class_name + "'OR ID = '" + class_name + "'")
        class_record=cur.fetchone()

        a=len(class_record[1])
        #Если родительский класс не едениственный падаем глубже и смотрим что там есть
        if a > 2:
            subClass = class_record[1]
            subClass = subClass.split(',')
            for i in subClass:
                cur.execute(("SELECT TITLE  FROM objects WHERE CLASS_ID = '" + i + "'"))
                sub_classes = cur.fetchall()
                subClass_tuple += (sub_classes)
            result = list(sum(subClass_tuple, ()))

        #Если родительский класс единственный выводим инфу
        elif (class_record[0]):
            clasId=str(class_record [0])
            cur.execute ("SELECT TITLE  FROM objects WHERE CLASS_ID = '"+ clasId +"'")
            sub_classes = list(cur.fetchall())
            result= list(sum(sub_classes, ()))
        else:
            print('EROR')
            if con:
                con.close()

    finally:
        if con:
            con.close()
    return result

После вызова функции

a=mjdm.getObjectsByClass('Rooms')

Получаем значения в виде списка

['Livingroom', 'Bedroom', 'Kitchen', 'Hall', 'Bathroom', 'Kinderroom', 'Toilet']

Соответственно далее можем использовать полученные данные в коде

a=mjdm.getObjectsByClass('Users')
for i in a:
    b="test"
    mjdm.sg(i+".TEST",b)

Предложения, замечания и матюги готов выслушать.) Но помните! Я только учусь)

Discuss (13) (2)

See also:
2020-10-19 Функции питона в альфа версии Мажордомо
2019-10-24 Управление телевизором на Android TV (linux)
2019-10-01 Отключение и включение компьютера удаленно
2019-09-03 Устройства Онлайн пинг Синего зуба (LINUX/WIN)

Москва, Россия

На форуме: Gastello007