import sqlalchemy
print(sqlalchemy.__version__)
from sqlalchemy import create_engine
from sqlalchemy import Column, Integer, ForeignKey
from sqlalchemy.exc import IntegrityError
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
class ModelBase:
@classmethod
def create(cls, session, **kwargs):
obj = cls(**kwargs)
session.add(obj)
session.commit()
return obj
class User(ModelBase, Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
addresses = relationship("Address", order_by="Address.id", back_populates="user")
class Address(ModelBase, Base):
__tablename__ = 'addresses'
id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey('
users.id'))
user = relationship("User", back_populates="addresses")
engine = create_engine('sqlite:///:memory:', echo=False)
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
jack = User.create(session)
jack.addresses.append(Address.create(session))
-----------------