Reputation: 171
i used the following code in order to get seats for a table and group them
cur.execute("SELECT * FROM seats WHERE Day = 'S' AND Booked = 'N' AND Disabled = 'N'")
for letter, rows in groupby(cur, key=lambda r: r[0][0]):
print ' '.join([r[0] for r in rows])
and i get the following print :
A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13
B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15
C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C16
D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 D16 D17 D18
E2 E3 E4 E5 E6 E7 E8 E9 E10 E11 E12 E13 E14 E15 E16 E17 E18 E19
F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19
G2 G3 G4 G5 G6 G7 G8 G9 G10 G11 G12 G13 G14 G15 G16 G17 G18
H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18
J2 J3 J4 J5 J6 J7 J8 J9 J10 J11 J12 J13 J14 J15 J16 J17 J18
K2 K3 K4 K5 K6 K7 K8 K9 K10 K11 K12 K13 K14 K15 K16 K17 K18
L2 L3 L4 L5 L6 L7 L8 L9 L10 L11 L12 L13 L14 L15
But there is A1 ,B2 Etc missing - Which are disabled seats, i am aware i put 'Disabled = N' but i want the disabled seats then to be printed at the bottom to give something like the following :
A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13
B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15
C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C16
D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 D16 D17 D18
E2 E3 E4 E5 E6 E7 E8 E9 E10 E11 E12 E13 E14 E15 E16 E17 E18 E19
F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19
G2 G3 G4 G5 G6 G7 G8 G9 G10 G11 G12 G13 G14 G15 G16 G17 G18
H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18
J2 J3 J4 J5 J6 J7 J8 J9 J10 J11 J12 J13 J14 J15 J16 J17 J18
K2 K3 K4 K5 K6 K7 K8 K9 K10 K11 K12 K13 K14 K15 K16 K17 K18
L2 L3 L4 L5 L6 L7 L8 L9 L10 L11 L12 L13 L14 L15
Disabled seats available : A1, C1 , C17
But i dont know how to work groupby very well?
Upvotes: 0
Views: 115
Reputation: 25207
Since you want to output the disabled seats differently, why don't you simply do it separately:
cur.execute("SELECT * FROM seats WHERE Day = 'S' AND Booked = 'N' AND Disabled = 'N'")
for letter, rows in groupby(cur, key=lambda r: r[0][0]):
print ' '.join([r[0] for r in rows])
cur.execute("SELECT * FROM seats WHERE Day = 'S' AND Booked = 'N' AND Disabled = 'Y'")
print 'Disabled seats available : ', ', '.join([r[0] for r in cur])
Upvotes: 2