SqlAlchemy Models
━━━━━━━━━━━━━━━━━

My Notes about using sqlalchemy models

Date: December 21, 2019

[1m[38;2;189;147;249mMake a connection[0m
[38;2;68;71;90m─────────────────[0m

[38;2;248;248;242m[code][0m
  from sqlalchemy import create_engine
  def get_engine():
      return create_engine("sqlite:///mode_examples.sqlite")

[1m[38;2;189;147;249mMake a session[0m
[38;2;68;71;90m──────────────[0m

[38;2;248;248;242m[code][0m
  from sqlalchemy.orm import sessionmaker
  def get_session():
      con = get_engine()
      Base.bind = con
      Base.metadata.create_all()
      Session = sessionmaker(bind=con)
      session = Session()
      return session

[1m[38;2;189;147;249mMake a Base Class[0m
[38;2;68;71;90m─────────────────[0m

[38;2;248;248;242m[code][0m
  from sqlalchemy.ext.declarative import declarative_base
  Base = declarative_base()
  Base.metadata.bind = get_engine()

[1m[38;2;189;147;249mMake your First Model[0m
[38;2;68;71;90m─────────────────────[0m

[38;2;248;248;242m[code][0m
  class User(Base):
      __tablename__ = "users"
      username = Column('username', Text())
      firstname = Column('firstname', Text())
      lastname = Column('lastname', Text())

[1m[38;2;189;147;249mMake your own Base Class to inherit From[0m
[38;2;68;71;90m────────────────────────────────────────[0m

[38;2;248;248;242m[code][0m
  class MyBaseHelper:
      def to_dict(self):
          return {k: v for k, v in self.__dict__.items() if k[0] != "_"}

      def update(self, **attrs):
          for key, value in attrs.items():
              if hasattr(self, key):
                  setattr(self, key, value)

[1m[38;2;189;147;249mUse the Custom Base Class[0m
[38;2;68;71;90m─────────────────────────[0m

[38;2;248;248;242m[code][0m
  class User(Base, MyBaseHelper):
      __tablename__ = "users"
      username = Column('username', Text())
      firstname = Column('firstname', Text())
      lastname = Column('lastname', Text())
