我有一个 SQL 查询,它将搜索数据库并返回包含至少 3 个不同列的单行,如下所示:
SELECT
`epg_num` AS `epgNum`,
`service_key` AS `serviceKey`,
`service_name` AS `channelName`
FROM `ssr_services`
WHERE `epg_num` = %(channelValue)s
我只需要将服务 key 添加到我的代码中的列表中。
上面的 SQL 查询不能修改,因为它被其他东西使用,我不想只为这个函数编写一个新查询。上面的查询也是另一个模块中的一个函数,我调用它来尝试提取服务 key 。
用户在运行代码时将指定epg_num。然后将在 SQL 中返回一行,显示 epg_num、服务 key 和服务名称
进口:
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)
希望这能提供足够的详细信息,但如果需要,我们很乐意提供更多信息。
提前致谢。
最佳答案
您如何执行该查询?与 pyodbc? 那么你实际上可以将该特定行放入字典中
columns = [column[0] for column in cursor.description]
list_of_dict =[]
for dict in cursor.fetchall():
list_of_dict.append(dict(zip(columns, dict)))
打印 list_of_dict 你就会明白一切。
注意:在执行该代码块之前不应执行其他查询,因为光标将被刷新。
我建议您访问该列表并在出于某种原因执行该查询时返回您想要的内容。
关于python - 如何从 SQL 查询中获取单个列并将其添加到 Python 列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56631549/