?print-pdf
' Created for
# Example SQL for CRUD operations
INSERT INTO users (name, age) VALUES ('Ivan', 30); -- Create
SELECT * FROM users; -- Read
UPDATE users SET age = 31 WHERE name = 'Ivan'; -- Update
DELETE FROM users WHERE name = 'Ivan'; -- Delete
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER NOT NULL
)
class User:
def __init__(self, name, age):
self.name = name
self.age = age
pip install sqlalchemy
create_engine
function.
from sqlalchemy import create_engine
# Create an engine to connect to a SQLite database
engine = create_engine('sqlite:///users.db')
# create engine for MySQL dialect with MySQL Connector DBAPI:
engine = create_engine("mysql+mysqlconnector://usr:pass@localhost/users")
# create engine for PostgreSQL dialect with psycopg2 DBAPI:
pg_engine = create_engine('postgresql+psycopg2://usr:pass@localhost/users')
Declarative Base
class and defines its columns as class attributes.
from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base
from sqlalchemy import Column, Integer, String
# Create an engine
engine = create_engine('sqlite:///users.db')
# Declare a base using declarative_base
Base = declarative_base()
# Define the User class inheriting from Base
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
# Create the tables in the database
Base.metadata.create_all(engine)
Base.metadata.create_all(engine)
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine('sqlite:///example.db')
Session = sessionmaker(bind=engine)
# Create a session
session = Session()
# Do your database operations
# ...
# Commit your changes
session.commit()
# Close the session when done
session.close()
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine('sqlite:///example.db')
Session = sessionmaker(bind=engine)
# Use a context manager
with Session() as session:
# Do your database operations
# ...
# Commit your changes
session.commit()
# Session automatically closes when the block ends
# Create a new user instance
new_user = User(name="Ivan", age=30)
# Add the new user to the session
session.add(new_user)
# Add multiple users at once
session.add_all([
User(name="Maria", age=22),
User(name="Stoyan", age=19)
])
# Commit the session to persist the changes
session.commit()
# Get all users
all_users = session.query(User).all()
for user in all_users:
print(user)
# Get first user
first_user = session.query(User).first()
print(first_user)
# Filter results
young_users = session.query(User).filter(User.age < 21).all()
for user in young_users:
print(user)
# Find a user and update her age
user = session.query(User).filter(User.name == "Maria").first()
user.age = 23 # type:ignore
session.commit()
# Update multiple records at once
session.query(User).filter(User.age < 25).update({"age": 10})
session.commit()
# Find and delete a specific user
user = session.query(User).filter(User.name == "Maria").first()
session.delete(user)
# Delete multiple records
session.query(User).filter(User.age == 5).delete()
session.commit()
These slides are based on
customised version of
framework