【发布时间】:2013-08-14 11:47:56
【问题描述】:
我遇到以下问题:
我有如下函数 process_query:
def process_query(query, parameters):
print query
print parameters
if(parameters is None):
cursor1.execute(query)
return cursor1.fetchall()
else:
cursor1.execute(query, parameters)
return cursor1.fetchall()
我在以下函数中调用:
def recieving_sumrpt():
theList=[]
theList=cursor1.execute('SELECT DISTINCT SSN FROM Employee').fetchall()
print theList
templist=[['SSN','Lname','FName','MInit','Known Hours','Unknown hours','Overtime']]
for i in theList:
basics= process_query('SELECT SSN, LName, FName, MInit FROM Employee WHERE SSN=?', (i))
templist.append(basics)
known_hours = process_query('SELECT sum(Coalesce(Hours,0)) FROM Works_On WHERE ESSN=?', (i))
print templist, known_hours
templist.append(known_hours[0])
count=cursor1.execute('SELECT Distinct ESSN FROM Works_On WHERE ISNULL(Hours) AND ESSN=?', (i)).rowcount
if count >=1:
templist.append('Yes')
else:
templist.append('No')
问题是当我打印 templist 时,我有以下外观:
[['SSN', 'Lname', 'FName', 'MInit', 'Known Hours', 'Unknown hours', 'Overtime'],
[('123456789', 'Smith', 'John', 'B')], [(Decimal('40.0'), )], 'No', 'Yes',
[('333445555', 'Wong', 'Franklin', 'T')], [(Decimal('40.0'), )], 'No', 'Yes',
[('453453453', 'English', 'Joyce', 'A')], [(Decimal('40.0'), )], 'No', 'Yes',
[('666884444', 'Narayan', 'Ramesh', 'K')], [(Decimal('40.0'), )], 'No', 'Yes',
[('888665555', 'Borg', 'James', 'E')], [(Decimal('0.0'), )], 'Yes', 'Yes',
[('987654321', 'Wallace', 'Jennifer', 'S')], [(Decimal('35.0'), )], 'No', 'Yes',
[('987987987', 'Jabbar', 'Ahmad', 'V')], [(Decimal('40.0'), )], 'No', 'Yes',
[('999887777', 'Zelaya', 'Alicia', 'J')], [(Decimal('40.0'), )], 'No', 'Yes']
当我想打印我的结果时,我认为这会导致问题:
def printing(list):
for i in list:
print '%-10s %-10s %-10s %-10s %-15s %-10s %-15s' % (i[0],i[1],i[2],i[3],i[4], i[5], i[6])
因为这给出了错误:“列表索引超出范围”
我认为这是因为我没有以下外貌:
['999887777', 'Zelaya', 'Alicia', 'J', Decimal('40.0'), 'No', 'Yes']
对于每一行。 (虽然可能是错的,这是我的第一个 python 实验室)。
打印函数的输出仅仅是:
SSN Lname FName MInit Known Hours Unknown hours Overtime
仅此而已。
我怎样才能把所有这些变成可以打印的东西?是否可以删除列表中的小数('40.0')外观?我试过使用 append(float(known_hours[0]) 但这给了我一个错误,说 known_hours 必须是数字或字符串。另外,我还没有真正弄清楚如何打印;有什么问题吗那个函数,还是我在原始给定函数中配置了很多的 process_query 函数?
【问题讨论】:
-
我建议您编辑您的帖子以提供仅一个关注此特定问题的SSCC example。是关于“获取行”还是从 Python 列表中提取数据?
-
我会调查的。我认为问题在于我得到的字符串不是真正的字符串,因为它涉及元组等。我有这么多的原因是我可以得到一些帮助:将它变成一个有效的字符串(因此循环我在哪里建立临时列表),所以我可以用打印功能打印它。 process_query 之所以出现,是因为我遇到了几个关于如何处理的问题,而且我不能 100% 确定这是正确的。