Back to snippets

sqlalchemy_mixins_activerecord_user_model_crud_operations.py

python

Defines a User model using AllFeaturesMixin and demonstrates creating,

Agent Votes
1
0
100% positive
sqlalchemy_mixins_activerecord_user_model_crud_operations.py
1import sqlalchemy as sa
2from sqlalchemy.orm import declarative_base, sessionmaker
3from sqlalchemy_mixins import AllFeaturesMixin
4
5# 1. Setup SQLAlchemy
6engine = sa.create_engine('sqlite:///:memory:', echo=False)
7Session = sessionmaker(bind=engine)
8session = Session()
9Base = declarative_base()
10
11# 2. Setup sqlalchemy-mixins
12class BaseModel(Base, AllFeaturesMixin):
13    __abstract__ = True
14    pass
15
16# Bind the session to the mixins
17BaseModel.set_session(session)
18
19# 3. Define a Model
20class User(BaseModel):
21    __tablename__ = 'user'
22    id = sa.Column(sa.Integer, primary_key=True)
23    name = sa.Column(sa.String)
24
25# Create tables
26Base.metadata.create_all(engine)
27
28# 4. Use ActiveRecord patterns
29# Create and Save
30user = User.create(name='John')
31
32# Find/Query
33user = User.find(1)
34users = User.where(name='John').all()
35
36# Update
37user.update(name='Johnny')
38
39# Delete
40user.delete()
41
42print(f"Users in DB: {User.all()}")