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)