2017-07-28 6 views
1

Hallo Ich versuche Python zu lernen, und im Moment möchte ich einige Daten aus SQL importieren. Leider habe ich ein Problem, das ich nicht lösen konnte. Ich erhalte die folgende Fehlermeldung:Python: Konvertieren von Listen aus SQL

cursor.execute("select * from matchinfo WHERE matchid = '%i'" % Matchid) TypeError: %i format: a number is required, not pyodbc.Row"

Ich denke, das Problem ist, dass die Listendaten nicht als ganze Zahlen formatiert ist, aber wenn ich versuche, Dinge zu tun wie „MatchID [0] = int (MatchID [0 ]) "(und dann Matchid [0] ausdrucken) funktioniert es auch nicht. Ich bin mir also nicht sicher, wie ich das Problem beheben kann. Der Code ist unten und danke im Voraus.

import pyodbc 

cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=DESKTOP-  
FCDHA0J\SQLEXPRESS;DATABASE=Data') 

cursor = cnxn.cursor() 

cursor.execute("select matchid from matchinfo where matchid > 1 order by dato asc") 

Matchinfo = cursor.fetchall() 


for Matchid in Matchinfo: 

    print(Matchinfo[0]) 

    cursor.execute("select * from matchinfo WHERE matchid = '%i'" % Matchid) 

Antwort

0

Sie versuchen Pyodbc.Row in eine integer zu werfen. Um dies zu beheben nur diese Änderungen vornehmen:

cursor.execute("select * from matchinfo WHERE matchid = %s", (Matchid[0],)) 

Warum Sie brauchen fetchall, müssen Sie offline oder etwas arbeiten?

tun Nur soviel:

cursor.execute("select matchid from matchinfo where matchid > 1 order by dato asc") 

for Matchid in Matchinfo: 
    match_id = Matchid[0] 
    cursor.execute("select * from matchinfo WHERE matchid = '%i'" % match_id) 

Und Sie sind einige Performance gewinnen, wenn die Tabelle groß ist, weil man zu einem Zeitpunkt ein Ergebnis sind retreiving. Auf der anderen Seite holen Sie alle Ergebnisse gleichzeitig in den Speicher.

+0

Ihr Recht. Vielen Dank. – MathiasRa

+0

+ MathiasRa Wenn diese Antwort Ihr Problem löst, markieren Sie sie bitte als akzeptiert. Vielen Dank! –

Verwandte Themen