SQLAlchemy Core - wybieranie wierszy

W tym rozdziale omówimy koncepcję wybierania wierszy w obiekcie tabeli.

Umożliwia nam to metoda select () obiektu tabeli construct SELECT expression.

s = students.select()

Zaznaczony obiekt jest tłumaczony na SELECT query by str(s) function jak pokazano poniżej -

'SELECT students.id, students.name, students.lastname FROM students'

Możemy użyć tego obiektu select jako parametru do wykonania () metody obiektu połączenia, jak pokazano w kodzie poniżej -

result = conn.execute(s)

Po wykonaniu powyższej instrukcji powłoka Pythona powtarza następujące równoważne wyrażenie SQL -

SELECT students.id, students.name, students.lastname
FROM students

Wynikowa zmienna jest odpowiednikiem kursora w DBAPI. Możemy teraz pobierać rekordy za pomocąfetchone() method.

row = result.fetchone()

Wszystkie zaznaczone wiersze w tabeli można wydrukować za pomocą pliku for loop jak podano poniżej -

for row in result:
   print (row)

Pełny kod do wydrukowania wszystkich wierszy z tabeli uczniów jest pokazany poniżej -

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
engine = create_engine('sqlite:///college.db', echo = True)
meta = MetaData()

students = Table(
   'students', meta, 
   Column('id', Integer, primary_key = True), 
   Column('name', String), 
   Column('lastname', String), 
)

s = students.select()
conn = engine.connect()
result = conn.execute(s)

for row in result:
   print (row)

Dane wyjściowe pokazane w powłoce Pythona są następujące -

(1, 'Ravi', 'Kapoor')
(2, 'Rajiv', 'Khanna')
(3, 'Komal', 'Bhandari')
(4, 'Abdul', 'Sattar')
(5, 'Priya', 'Rajhans')

Klauzulę WHERE zapytania SELECT można zastosować przy użyciu Select.where(). Na przykład, jeśli chcemy wyświetlić wiersze o id> 2

s = students.select().where(students.c.id>2)
result = conn.execute(s)

for row in result:
   print (row)

Tutaj c attribute is an alias for column. Następujące dane wyjściowe zostaną wyświetlone w powłoce -

(3, 'Komal', 'Bhandari')
(4, 'Abdul', 'Sattar')
(5, 'Priya', 'Rajhans')

Tutaj musimy zauważyć, że obiekt select można również uzyskać za pomocą funkcji select () w module sqlalchemy.sql. Funkcja select () wymaga obiektu tabeli jako argumentu.

from sqlalchemy.sql import select
s = select([users])
result = conn.execute(s)