У меня есть SQL-запрос, который будет искать в базе данных и возвращать одну строку, содержащую как минимум 3 разных столбца, следующим образом:
SELECT
`epg_num` AS `epgNum`,
`service_key` AS `serviceKey`,
`service_name` AS `channelName`
FROM `ssr_services`
WHERE `epg_num` = %(channelValue)s
Мне требуется только чтобы служебный ключ был добавлен в список в моем коде.
Вышеупомянутый запрос SQL не может быть изменен, так как он используется другими вещами, и я бы предпочел не писать новый запрос только для этой одной функции. Вышеупомянутый запрос также является функцией в другом модуле, который я вызываю, чтобы попытаться извлечь служебный ключ.
Пользователь будет указывать epg_num при запуске кода. Который затем вернет строку в SQL с указанием epg_num, служебного ключа и служебного имени
Импорт:
import sys
import os
import MySQLdb
from subprocess import check_output, CalledProcessError
from collections import OrderedDict
from UPnP.core.proxy import ServerProxy
from Data_Types import PlannerExportEvent, PlannerExportResponse, UpnpError, Result, Channel, Event, Shelf
from Database_Connection import FetchAll, FetchOne
from Decorators import ResetRetry, Suppress
from Logs import Logging
from Utilities import GetRecycID, GetRackID, Wait
Код, который у меня есть на данный момент, следующий:
if epgNumsList:
serviceKeysList = self.GetMultiChannelInfo(epgNumsList=epgNumsList)
print(serviceKeysList)
whereString = "(epg_num IN ({epgNumsList}) AND epg_num LIKE '___')".format(epgNumsList=','.join(epgNumsList))
Который использует следующее:
def GetMultiChannelInfo(self, epgNumsList=None):
serviceKeys = []
for epgNum in epgNumsList:
retObj = self.GetChannelInfo(epgNum=epgNum)
result = retObj.Result()
if result:
channelObj = retObj.Data()
result = channelObj.serviceKey
serviceKeys.append(result)
print(result)
else:
print('Channel not found')
print(serviceKeys)
return Result(serviceKeys)
Я вижу следующую ошибку:
Traceback (most recent call last):
File "C:\Users\MHE36\workspace\Scripts\SkyPlus__UPnP_Set_Recordings.py", line 42, in <module>
upnp.BackgroundRecordings(recordings, epgNumsList, serviceKeysList, duration)
File "C:\Users\MHE36\workspace\Libraries\SuperPlanner.py", line 1154, in BackgroundRecordings
print(serviceKeysList)
File "C:\Users\MHE36\workspace\Libraries\Data_Types.py", line 32, in __repr__
return 'Result (Result: {result}, Data: {data}, NumFailures: {numFailures})'.format(result=self.result, numFailures=self.numFailures)
KeyError: 'data'
Я думаю, что трассировка связана с этим битом кода из другого модуля:
def __repr__(self):
return 'Result (Result: {result}, Data: {data}, NumFailures: {numFailures})'.format(result=self.result, numFailures=self.numFailures)
Надеюсь, это даст достаточно подробностей, но с удовольствием предоставит больше, если необходимо.
Заранее спасибо.