SQLAlchemy Core-행 선택

이 장에서는 테이블 개체에서 행을 선택하는 개념에 대해 설명합니다.

테이블 객체의 select () 메서드를 사용하면 construct SELECT expression.

s = students.select()

선택 개체는 다음과 같이 변환됩니다. SELECT query by str(s) function 아래와 같이-

'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() method.

row = result.fetchone()

테이블에서 선택한 모든 행은 for loop 아래와 같이-

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')

SELECT 쿼리의 WHERE 절은 다음을 사용하여 적용 할 수 있습니다. Select.where(). 예를 들어, ID가> 2 인 행을 표시하려면

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

for row in result:
   print (row)

여기 c attribute is an alias for column. 다음 출력이 쉘에 표시됩니다-

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

여기서 select object는 sqlalchemy.sql 모듈의 select () 함수로도 얻을 수 있다는 점에 유의해야합니다. select () 함수에는 테이블 객체가 인수로 필요합니다.

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