Skip to content

Instantly share code, notes, and snippets.

@mmerickel
Created April 1, 2013 17:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mmerickel/5286502 to your computer and use it in GitHub Desktop.
Save mmerickel/5286502 to your computer and use it in GitHub Desktop.
weird sqlalchemy
from sqlalchemy import (
create_engine,
Column,
ForeignKey,
)
from sqlalchemy import (
Integer,
String,
)
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import (
relationship,
sessionmaker,
)
Base = declarative_base()
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True, nullable=False)
name = Column(String, unique=True, nullable=False)
class Group(Base):
__tablename__ = 'group'
id = Column(Integer, primary_key=True, nullable=False)
name = Column(String, unique=True, nullable=False)
owner_id = Column(Integer, ForeignKey('user.id'))
owner = relationship('User', backref='groups')
def main():
engine = create_engine('sqlite://')
Base.metadata.create_all(bind=engine)
Session = sessionmaker(bind=engine)
session = Session()
foo = User(name='foo')
users = session.query(User).all()
assert foo not in users
session.add(foo)
users = session.query(User).all()
assert foo in users
session.commit()
session = Session()
foo = session.query(User).filter_by(name='foo').first()
baz = Group(name='baz')
groups = session.query(Group).all()
assert baz not in groups
bar = Group(name='bar', owner=foo)
groups = session.query(Group).all()
assert bar not in groups
if __name__ == '__main__':
import sys
sys.exit(main() or 0)
❯ env/bin/python test.py
Traceback (most recent call last):
File "test.py", line 64, in <module>
sys.exit(main() or 0)
File "test.py", line 58, in main
assert bar not in groups
AssertionError
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment