2016-03-22 11 views
1

Ich bin neu in Python und haben Setup pymssql eine gespeicherte Prozedur auszuführen, wie pro häufig Beispiele gefunden:Bauen durch Kommata getrennte Liste von Zeilen von SQL-Ergebnisse

cur.execute("EXEC [dbo].[GetIPList]") 

row = cur.fetchone() 
while row: 
    print "%s" % (row[0]) 
    row = cur.fetchone() 

ich eine Variable aufbauen wollen, die ein Komma getrennte Liste aller Zeilen.

Wenn ich „cur.fetchall“ anstelle von „cur.fetchone“ verwenden erhalte ich ein Tupel, das ich nicht sicher bin, wie in der Subprozess verwenden.

Was ist der beste Ansatz, hier zu sein?

+1

' '' join (tuple_of_rows)' – MaxNoe

+0

Und Guido von Rossum zu zitieren: 'Niemand sollte 2 Python mit mehr'. Wenn Sie Python sind neu und müssen nicht auf alten Code verlassen, verwendet Python 3. – MaxNoe

+0

@MaxNoe, in der Nähe, aber nicht ganz, da jede Zeile selbst ist ein Tupel. Dieser genaue Code mit einem Tupel von Tupeln (oder einer Liste von Tupeln) wird nicht ganz richtig herauskommen. –

Antwort

1

Etwas wie folgt aus:.

s = ','.join([ r[0] for r in cur.fetchall() ]) 
+0

Sie brauchen das Listenverständnis nicht, ein Generator ist genug. – MaxNoe

+0

@MaxNoe, ... um sicher zu sein, werden beide funktionieren, aber ersteres ist leichter zu zerlegen und zu inspizieren, so staatenlos wie es ist. –

+0

Das Objekt wird direkt von 'Join' konsumiert. Warum die Liste erstellen? Es fügt nur unnötige Symbole hinzu und erzeugt ein unnötiges und potentiell großes Objekt. – MaxNoe

Verwandte Themen