簡體   English   中英

列表內的單個逗號分隔的元組

[英]Single comma separated tuple inside of a list

使用pyodbc,我正在處理執行帶有輸出的存儲過程。

import pyodbc
conn = pyodbc.connect('DRIVER=' + driver + ';PORT=1433;SERVER=' + server +
                      ';PORT=1443;DATABASE=' + database + ';UID=' + username + ';PWD=' + password)
cmd = conn.cursor()
sql = """\
Too long to post
"""
params = ('EOXH39020220', 'EOXH39020245', 'EOXH3E360011')
for item in params:
    cmd.execute(sql, item)
    rst = cmd.fetchall()
    print(rst)
conn.close

我正在測試的特定存儲過程的輸出將產生以下內容:

[(False, 1, 3, 2, 967, 6, 'ABC-DE-FGHI', 'LOREM', 'IPSUM', 'CLASS PRODUCT', 'F/P', 'LABELDESCRIPTION', 'N/A', 'DESCRIPTION', 'ASL66', 'ASL10', '3FE50712BA', 'ABC-DE-FGHI', 'PO', 'ITEM#', 'OEM#', 'F/P', '1')]
[(False, 1, 4, 1, 967, 7, 'ABC-DE-FGHI', 'LOREM', 'IPSUM', 'CLASS PRODUCT', 'F/P', 'LABELDESCRIPTION', 'N/A', 'DESCRIPTION', 'ASL66', 'ASL10', '3FE50712BA', 'ABC-DE-FGHI', 'PO', 'ITEM#', 'OEM#', 'F/P', '1')]
[(False, 1, 4, 2, 967, 8, 'ABC-DE-FGHI', 'LOREM', 'IPSUM', 'CLASS PRODUCT', 'F/P', 'LABELDESCRIPTION', 'N/A', 'DESCRIPTION', 'ASL66', 'ASL10', '3FE50712BA', 'ABC-DE-FGHI', 'PO', 'ITEM#', 'OEM#', 'F/P', '1')]

我不能在它上使用.split ,因為它不是真正的字符串。 如何在列表中拆分元組的內容? 我想做的是將結果分解成多個變量以供使用。 我沒有得到我期望看到的結果。 例如:

testlist = [(False, 1, 3, 2, 967, 6, 'ABC-DE-FGHI', 'LOREM', 'IPSUM', 'CLASS 1 PRODUCT', 'F/P', 'DESCRIPTION', 'N/A', 'DESCRIPTION', 'ASL66', 'ASL10', '3FE50712BA', 'ABC-DE-FGHI', 'PO', 'ITEM#', 'OEM#', 'F/P', '1')]
for i in testlist[0]:
    print(testlist[0][i])

結果:

錯誤1 2 3

正如roganjosh所建議的那樣,我完全錯過了循環中需要的東西。 前5項,例如:

testlist = [(False, 1, 3, 2, 967, 6, 'ABC-DE-FGHI', 'LOREM', 'IPSUM', 'CLASS PRODUCT', 'F/P', 'LABELDESCRIPTION', 'N/A', 'DESCRIPTION', 'ASL66', 'ASL10', '3FE50712BA', 'ABC-DE-FGHI', 'PO', 'ITEM#', 'OEM#', 'F/P', '1')]

newlist = []

for x in testlist[0]:
    newlist.append(x)

print(newlist[:5])

[False,1,3,2,967]

這個問題有點混亂,但是我們在評論中確定了這個問題。 fetchall()返回的內容中,您的標題大體上是准確的:繼續說明時,該列表包含一個元組, 而不是字典。

當您期望多個匹配項時,通常使用fetchall() ,其中每行將是列表中的一個元組(因此,如果您總是得到一個結果,則可以考慮使用@Barmar在注釋中聲明的fetchone fetchone() )。

在評論中,您指出您嘗試了以下操作,但沒有成功:

for i in testlist[0]: 
    print(testlist[0][i])

不會testlist[0]使您可以訪問元組,但是隨后您嘗試訪問它,就好像它是以i為鍵的字典一樣。 相反, i是分配給該元組中每個項目的名稱。

解決方案非常簡單:

for i in testlist[0]: 
    print(i)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM