Databases are used to store, retrieve, update, and manage data efficiently. Python provides excellent support for both SQL databases and ORM-based approaches.
A database is an organized collection of data stored electronically.
SQLite is a lightweight, file-based database included with Python.
import sqlite3
conn = sqlite3.connect("students.db")
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER
)
""")
conn.commit()
cursor.execute("INSERT INTO students (name, age) VALUES (?, ?)", ("Rahul", 22))
conn.commit()
cursor.execute("SELECT * FROM students")
print(cursor.fetchall())
conn.close()
MySQL is a popular open-source relational database widely used in production.
pip install mysql-connector-python
import mysql.connector
conn = mysql.connector.connect(
host="localhost",
user="root",
password="password",
database="company"
)
cursor = conn.cursor()
cursor.execute(
"INSERT INTO employees (name, salary) VALUES (%s, %s)",
("Amit", 50000)
)
conn.commit()
cursor.execute("SELECT * FROM employees")
for row in cursor:
print(row)
PostgreSQL is an advanced, enterprise-grade database.
pip install psycopg2-binary
import psycopg2
conn = psycopg2.connect(
dbname="testdb",
user="postgres",
password="password",
host="localhost"
)
cursor = conn.cursor()
cursor.execute("SELECT version()")
print(cursor.fetchone())
conn.commit()
conn.close()
ORM (Object Relational Mapping) lets you interact with databases using Python objects instead of SQL queries.
| SQL | ORM |
|---|---|
| Manual queries | Python objects |
| Error-prone | Safer |
| DB-specific | Portable |
SQLAlchemy is a powerful Python ORM.
pip install sqlalchemy
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import declarative_base, sessionmaker
engine = create_engine("sqlite:///users.db")
Base = declarative_base()
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
user = User(name="Prakash", age=25)
session.add(user)
session.commit()
users = session.query(User).all()
for user in users:
print(user.name)
user = session.query(User).filter_by(name="Prakash").first()
user.age = 26
session.commit()
user = session.query(User).filter_by(name="Prakash").first()
session.delete(user)
session.commit()