SQLAlchemy Core: selezione di righe

In questo capitolo, discuteremo del concetto di selezione di righe nell'oggetto tabella.

Il metodo select () dell'oggetto table ci permette di farlo construct SELECT expression.

s = students.select()

L'oggetto selezionato si traduce in SELECT query by str(s) function come mostrato di seguito -

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

Possiamo usare questo oggetto di selezione come parametro per eseguire il metodo di connessione dell'oggetto come mostrato nel codice seguente -

result = conn.execute(s)

Quando viene eseguita l'istruzione di cui sopra, la shell Python echeggia dopo un'espressione SQL equivalente:

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

La variabile risultante è un equivalente del cursore in DBAPI. Ora possiamo recuperare i record usandofetchone() method.

row = result.fetchone()

Tutte le righe selezionate nella tabella possono essere stampate da un file for loop come indicato di seguito -

for row in result:
   print (row)

Di seguito è mostrato il codice completo per stampare tutte le righe dalla tabella degli studenti:

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)

L'output mostrato nella shell Python è il seguente:

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

La clausola WHERE della query SELECT può essere applicata utilizzando Select.where(). Ad esempio, se vogliamo visualizzare righe con id> 2

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

for row in result:
   print (row)

Qui c attribute is an alias for column. Il seguente output verrà visualizzato sulla shell:

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

Qui, dobbiamo notare che select object può essere ottenuto anche dalla funzione select () nel modulo sqlalchemy.sql. La funzione select () richiede l'oggetto table come argomento.

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