Selectarea datelor dintr-un tabel cu SQLAlchemy
Excelent până acum! A venit momentul să construiești prima ta instrucțiune de selectare folosind SQLAlchemy. SQLAlchemy oferă o modalitate „Pythonicã" de a interacționa cu bazele de date. Când ai folosit SQL brut în exercițiul anterior, ai interogat direct baza de date. Când folosești SQLAlchemy, vei lucra printr-un obiect Table, iar SQLAlchemy se va ocupa de traducerea interogării tale într-o instrucțiune SQL potrivită. Astfel, în loc să te confrunți cu diferențele dintre dialectele specifice ale SQL tradițional, precum MySQL sau PostgreSQL, poți folosi cadrul Pythonic al SQLAlchemy pentru a-ți eficientiza fluxul de lucru și a interoga datele mai rapid. Din acest motiv, merită să îl înveți chiar dacă ești deja familiarizat cu SQL tradițional.
În acest exercițiu, vei construi din nou o instrucțiune pentru a prelua toate înregistrările din tabelul census. De data aceasta, vei folosi funcția select() din modulul sqlalchemy. Această funcție necesită o listă de tabele sau coloane ca singurul argument obligatoriu: de exemplu, select([my_table]).
Vei prelua doar câteva înregistrări din ResultProxy folosind .fetchmany() cu un argument size care specifică numărul de înregistrări de preluat.
Table și MetaData au fost deja importate. Metadatele sunt disponibile ca metadata, iar conexiunea la baza de date ca connection.
Acest exercițiu face parte din cursul
Introducere în baze de date în Python
Instrucțiuni pentru exercițiu
- Importă
selectdin modululsqlalchemy. - Reflectă tabelul
census. Acest cod este deja scris pentru tine. - Creează o interogare folosind funcția
select()pentru a prelua toate înregistrările din tabelulcensus. Pentru aceasta, transmite o listă cătreselect()care conține un singur element:census. - Afișează
stmtpentru a vedea interogarea SQL efectivă generată. Acest cod a fost deja scris pentru tine. - Preia 10 înregistrări din tabelul
censusși stochează-le înresults. Pentru aceasta:- Folosește metoda
.execute()peconnectioncustmtca argument pentru a obține ResultProxy. - Folosește
.fetchmany()cu argumentulsizecorespunzător peconnection.execute(stmt)pentru a obține ResultSet-ul.
- Folosește metoda
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# Import select
from ____ import ____
# Reflect census table via engine: census
census = Table('census', metadata, autoload=True, autoload_with=engine)
# Build select statement for census table: stmt
stmt = ____
# Print the emitted statement to see the SQL string
print(stmt)
# Execute the statement on connection and fetch 10 records: result
results = ____.____(____).____(size=___)
# Execute the statement and print the results
print(results)