2016-02-04 9 views
7

Próbuję wydrukować pierwszych 10 wierszy za pomocą pyodbc. Wiem, jak dostać się do pierwszego rekordu przy użyciu następujących:Pyodbc - wydrukuj pierwszych 10 wierszy (python)

row = cursor.fetchall() 

Próbowałem zmieniając to:

row = cursor.fetchten() 

ale to nie działa. Czy jest coś jeszcze co mogę zrobić?

+1

'fetchall' zwróci * wszystkie * wiersze kursora, a nie tylko pierwszy. Co tak naprawdę próbujesz zrobić? –

+1

Nie robię nic z pyodbc, więc może to być kompletny bełkot, ale czy nie można zrobić 'cursor.fetchall() [: 10]'? – zondo

Odpowiedz

4

wstawić:

row = cursor.fetchmany(10) 

Można zmienić numer w nawiasie na cokolwiek chcesz.

2

Na podstawie znalezionej dokumentacji on this page masz dwie opcje powrotu list. Masz metodę fetchall() i metodę fetchmany(). W obu przypadkach zwrócono listę wierszy, z którymi można pracować.

Jeśli chodzi o metodę fetchall() i piggybacking off co zondo powiedział następujące prace szybko i sprawnie:

rows = cursor.fetchall()[:10] # to get the first 10 
rows = cursor.fetchall()[-10::1] # to get the last 10 

Alternatywnie, można pętli nad rzędami tyle razy trzeba uzyskać oczekiwane rezultaty:

rows = cursor.fetchall() 
for idx in range(10): #[0, 1, ..., 9,] 
    print(rows[idx]) # to get the first 10 
    print(rows[(len(ray)-idx)]) # to get the last 10 

Istnieje również sposób, w tym samym dokumentacji fetchmany() zdefiniowane następująco: cursor.fetchmany([size=cursor.arraysize]) --> list

Nawiasy wskazują opcjonalne parametry, więc nie trzeba uwzględniać rozmiaru. Ale ponieważ chcesz 10, przekażesz 10 do parametru wielkości. Przykład:

rows = cursor.fetchmany(size=10) 
for row in rows: 
    print(row) 
Powiązane problemy