SQLAlchemy Core - Sélection de lignes

Dans ce chapitre, nous discuterons du concept de sélection de lignes dans l'objet table.

La méthode select () de l'objet table nous permet de construct SELECT expression.

s = students.select()

L'objet sélectionné se traduit par SELECT query by str(s) function comme indiqué ci-dessous -

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

Nous pouvons utiliser cet objet select comme paramètre pour exécuter la méthode execute () de l'objet de connexion comme indiqué dans le code ci-dessous -

result = conn.execute(s)

Lorsque l'instruction ci-dessus est exécutée, le shell Python fait écho à l'expression SQL équivalente -

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

La variable résultante est un équivalent du curseur dans DBAPI. Nous pouvons maintenant récupérer les enregistrements en utilisantfetchone() method.

row = result.fetchone()

Toutes les lignes sélectionnées dans le tableau peuvent être imprimées par un for loop comme indiqué ci-dessous -

for row in result:
   print (row)

Le code complet pour imprimer toutes les lignes de la table des élèves est indiqué ci-dessous -

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)

La sortie affichée dans le shell Python est la suivante -

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

La clause WHERE de la requête SELECT peut être appliquée à l'aide de Select.where(). Par exemple, si nous voulons afficher des lignes avec un id> 2

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

for row in result:
   print (row)

Ici c attribute is an alias for column. La sortie suivante sera affichée sur le shell -

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

Ici, nous devons noter que select object peut également être obtenu par la fonction select () dans le module sqlalchemy.sql. La fonction select () requiert l'objet table comme argument.

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