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)