ÎncepețiÎncepe gratuit

Încărcarea automată a tabelelor dintr-o bază de date

SQLAlchemy poate fi folosit pentru a încărca automat tabele dintr-o bază de date printr-un proces numit reflecție. Reflecția înseamnă citirea bazei de date și construirea metadatelor pe baza informațiilor existente. Este opusul creării manuale a unui tabel și este foarte utilă atunci când lucrezi cu baze de date deja existente.

Pentru a realiza reflecția, va trebui mai întâi să imporți și să inițializezi un obiect MetaData. Obiectele MetaData conțin informații despre tabelele stocate într-o bază de date. În timpul reflecției, obiectul MetaData va fi populat automat cu informații despre tabelul reflectat, așa că este suficient să îl inițializezi înainte de reflecție, apelând MetaData().

Vei mai avea nevoie să imporți obiectul Table din pachetul SQLAlchemy. Folosești apoi acest obiect Table pentru a citi tabelul din engine, a încărca automat coloanele și a popula metadatele. Totul se poate face printr-un singur apel la Table(): utilizarea obiectului Table în acest mod este similară cu transmiterea argumentelor către o funcție. De exemplu, pentru a încărca automat coloanele cu engine-ul, trebuie să specifici argumentele cheie autoload=True și autoload_with=engine în apelul Table().

În final, pentru a vizualiza informații despre obiectul tocmai creat, vei folosi funcția repr(). Pentru orice obiect Python, repr() returnează o reprezentare textuală a acestuia. În cazul obiectelor Table din SQLAlchemy, va returna informațiile despre tabel conținute în metadate.

În acest exercițiu, sarcina ta este să reflecți tabelul "census" disponibil pe engine-ul tău într-o variabilă numită census. Codul pentru crearea engine-ului, pe care l-ai scris în exercițiul anterior, a fost deja completat în avans.

Acest exercițiu face parte din cursul

Introducere în baze de date în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Importă Table și MetaData din sqlalchemy.
  • Creează un obiect MetaData: metadata.
  • Reflectă tabelul census folosind obiectul Table cu următoarele argumente:
    • Numele tabelului ca șir de caractere ('census').
    • Obiectul metadata pe care tocmai l-ai inițializat.
    • autoload=True
    • Engine-ul pentru încărcarea automată – în acest caz, engine.
  • Afișează detaliile obiectului census folosind funcția repr().

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# Import create_engine, MetaData, and Table
from sqlalchemy import create_engine, ___, ____

# Create engine: engine
engine = create_engine('sqlite:///census.sqlite')

# Create a metadata object: metadata
metadata = ___

# Reflect census table from the engine: census
census = Table(____, ____, autoload=____, autoload_with=____)

# Print census table metadata
print(____)
Editează și rulează codul