代码之家  ›  专栏  ›  技术社区  ›  addohm

列表中的单逗号分隔元组

  •  0
  • addohm  · 技术社区  · 8 年前

    我正在使用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])
    

    [假,1,3,2,967]

    1 回复  |  直到 8 年前
        1
  •  1
  •   roganjosh    8 年前

    这个问题有点困惑,但我们在评论中确定了这个问题。你的头衔基本上是准确的 fetchall() :包含单个元组的列表, 一本字典,当你继续陈述时。

    fetchall() 通常在需要多个匹配时使用,其中每一行都是列表中的一个元组(因此您可以考虑使用 fetchone() 如@Barmar在评论中所述,如果你总是得到一个结果)。

    在评论中,您表示您尝试了以下操作,但无效:

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

    不会的- testlist[0] 允许您访问元组,但您尝试访问它,就像它是一个字典 i 作为关键。相反 指定给该元组中每个项的名称。

    解决方案非常简单:

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