Использование функции 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)
Предложения, замечания и матюги готов выслушать.) Но помните! Я только учусь)
Москва, Россия
На форуме: Gastello007