В этой главе мы обсудим концепцию выбора строк в табличном объекте.
Метод select () табличного объекта позволяет нам создавать выражение SELECT .
s = students.select()
Объект select преобразуется в запрос SELECT с помощью функции str (s), как показано ниже —
'SELECT students.id, students.name, students.lastname FROM students'
Мы можем использовать этот объект select как параметр для метода execute () объекта подключения, как показано в коде ниже —
result = conn.execute(s)
Когда приведенный выше оператор выполняется, оболочка Python отображает следующее эквивалентное выражение SQL —
SELECT students.id, students.name, students.lastname FROM students
Результирующая переменная является эквивалентом курсора в DBAPI. Теперь мы можем получать записи, используя метод fetchone () .
row = result.fetchone()
Все выбранные строки в таблице могут быть напечатаны с помощью цикла for, как показано ниже —
for row in result: print (row)
Полный код для печати всех строк из таблицы студентов показан ниже —
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)
Вывод, показанный в оболочке Python, выглядит следующим образом:
(1, 'Ravi', 'Kapoor') (2, 'Rajiv', 'Khanna') (3, 'Komal', 'Bhandari') (4, 'Abdul', 'Sattar') (5, 'Priya', 'Rajhans')
Предложение WHERE запроса SELECT может быть применено с помощью Select.where () . Например, если мы хотим отображать строки с идентификатором> 2
s = students.select().where(students.c.id>2) result = conn.execute(s) for row in result: print (row)
Здесь атрибут c является псевдонимом для столбца . Следующий результат будет отображаться на оболочке —
(3, 'Komal', 'Bhandari') (4, 'Abdul', 'Sattar') (5, 'Priya', 'Rajhans')
Здесь следует отметить, что объект select также можно получить с помощью функции select () в модуле sqlalchemy.sql. Функция select () требует в качестве аргумента табличный объект.