Учебники

Ядро SQLAlchemy — Выбор строк

В этой главе мы обсудим концепцию выбора строк в табличном объекте.

Метод 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 () требует в качестве аргумента табличный объект.