Skip to content

Cum să interoghezi baze de date din Python

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Cum să interoghezi baze de date din Python. We cover key concepts, practical examples, and best practices.

Interogarea bazelor de date din Python se face cu pandas.read_sql și SQLAlchemy, permițând extragerea directă a rezultatelor SQL în DataFrame-uri gata de analiză.

The Problem

Conectarea manuală la baze de date, executarea interogărilor și parsarea rândurilor în structuri Python necesită mult cod boilerplate. În plus, fiecare tip de bază de date (PostgreSQL, MySQL, SQLite) are un driver diferit, ceea ce complică și mai mult procesul.

The Wrong Way

import sqlite3
import pandas as pd

conn = sqlite3.connect("date.db")
cursor = conn.cursor()
cursor.execute("SELECT * FROM vanzari")
rows = cursor.fetchall()
columns = [desc[0] for desc in cursor.description]
df = pd.DataFrame(rows, columns=columns)
conn.close()

Problemă: Mult cod manual, predispus la erori. Pentru fiecare interogare trebuie să repeți același tipar.

The Right Way

import pandas as pd
from sqlalchemy import create_engine

engine = create_engine("sqlite:///date.db")
df = pd.read_sql("SELECT * FROM vanzari", engine)
print(df.head())

Output:

   id  produs  pret  cantitate
0   1  Laptop  3500         10
1   2  Mouse    150         50
2   3  Monitor  1200         20

Step-by-Step Fix

1. Creează conexiunea cu SQLAlchemy

# PostgreSQL
engine = create_engine("postgresql://user:pass@localhost:5432/bd")

# MySQL
engine = create_engine("mysql+pymysql://user:pass@localhost:3306/bd")

# SQLite
engine = create_engine("sqlite:///cale/catre/fisier.db")

2. Scrie interogarea și citește în DataFrame

query = """
SELECT c.nume, SUM(v.total) as total_vanzari
FROM vanzari v
JOIN clienti c ON v.client_id = c.id
GROUP BY c.nume
ORDER BY total_vanzari DESC
"""
df = pd.read_sql(query, engine)

3. Scrie rezultatele înapoi în bază

df.to_sql("raport_vanzari", engine, if_exists="replace", index=False)

Prevention Tips

  • Folosește SQLAlchemy — abstractizează diferențele între bazele de date
  • Parametrizează interogările cu params pentru a preveni SQL injection
  • Închide conexiunile cu engine.dispose() după utilizare

Common Mistakes

  1. Șiruri de conectare hardcodate — folosește variabile de mediu
  2. Fără parametrizare — risc de SQL injection când concatenezi direct în query
  3. if_exists="fail" la scriere — eroare dacă tabela există deja; folosește "replace" sau "append"
  4. Index salvat în SQL — setează index=False la to_sql
  5. Conexiuni neînchise — epuizează pool-ul de conexiuni

FAQ

### Ce este SQLAlchemy?

Un ORM și toolkit SQL pentru Python care abstractizează diferențele între baze de date (PostgreSQL, MySQL, SQLite etc.).

### Cum interoghez cu parametri?

Folosește pd.read_sql("SELECT * FROM t WHERE id = :id", engine, params={"id": 5}).

### Pot scrie un DataFrame întreg într-o tabelă?

Da, cu df.to_sql("nume_tabela", engine, if_exists="replace", index=False).

Construit de dezvoltătorii Doda Browser, DodaZIP și Durga Antivirus Pro. Instrumentele DodaTech se integrează perfect cu SQL și pandas pentru productivitate și securitate sporite.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro