Python SQLAlchemy
Work with databases using SQLAlchemy ORM.
Database operations made easy.
Install SQLAlchemy
```bash pip install sqlalchemy ```
Define Model
```python from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker
Base = declarative_base()
class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String) email = Column(String)
Create database engine = create_engine('sqlite:///users.db') Base.metadata.create_all(engine) ```
Insert Data
```python Session = sessionmaker(bind=engine) session = Session()
Add single user user = User(name="Tom", email="tom@example.com") session.add(user)
Add multiple users = [ User(name="Sarah", email="sarah@example.com"), User(name="Mike", email="mike@example.com") ] session.add_all(users)
session.commit() ```
Query Data
```python # Get all users = session.query(User).all() for user in users: print(user.name)
Filter user = session.query(User).filter_by(name="Tom").first() print(user.email)
Advanced filter users = session.query(User).filter(User.name.like("%a%")).all() ```
Update Data
```python user = session.query(User).filter_by(name="Tom").first() user.email = "newemail@example.com" session.commit() ```
Delete Data
```python user = session.query(User).filter_by(name="Tom").first() session.delete(user) session.commit() ```
Relationships
```python from sqlalchemy import ForeignKey from sqlalchemy.orm import relationship
class Post(Base): __tablename__ = 'posts' id = Column(Integer, primary_key=True) title = Column(String) user_id = Column(Integer, ForeignKey('users.id')) user = relationship("User", backref="posts")
Query with relationship user = session.query(User).first() for post in user.posts: print(post.title) ```
Remember
- Always commit changes - Use sessions for database operations - Close sessions when done