What is SQLAlchemy?
SQLAlchemy is a Python SQL toolkit and Object-Relational Mapping (ORM) library. It provides a high-level interface for working with databases without writing raw SQL.
Installation
Install SQLAlchemy:
pip install sqlalchemy
Creating Engine
Connect to database:
from sqlalchemy import create_engine
# SQLite
engine = create_engine('sqlite:///database.db')
# PostgreSQL
engine = create_engine('postgresql://user:pass@localhost/dbname')
# MySQL
engine = create_engine('mysql://user:pass@localhost/dbname')
Defining Models
Create database models:
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
username = Column(String(50), unique=True)
email = Column(String(100), unique=True)
# Create tables
Base.metadata.create_all(engine)
Database Operations
Create Session
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
Create
user = User(username='alice', email='[email protected]')
session.add(user)
session.commit()
Read
# Get all
users = session.query(User).all()
# Get by ID
user = session.query(User).get(1)
# Filter
user = session.query(User).filter_by(username='alice').first()
Update
user = session.query(User).get(1)
user.email = '[email protected]'
session.commit()
Delete
user = session.query(User).get(1)
session.delete(user)
session.commit()
Best Practices
- Use sessions properly: Close sessions after use
- Handle transactions: Commit or rollback appropriately
- Use migrations: Alembic for schema changes
- Optimize queries: Use eager loading when needed
Next Steps
Learn about Flask database integration which uses SQLAlchemy.