tag1 = Tag(name="tag1") tag2 = Tag(name="tag2") session.add_all([tag1, tag2]) session.commit() comm1 = Commerce(name="comm1", subsidiary=sub1) comm2 = Commerce(name="comm2", subsidiary=sub1) comm3 = Commerce(name="comm3", subsidiary=sub2) comm1.tags = [tag1, tag2] comm2.tags = [tag2] comm3.tags = [tag2] session.add_all([comm1, comm2, comm3]) session.commit() print get_sql_table_data(session, Subsidiary) print get_sql_table_data(session, Commerce) print get_sql_table_data(session, Tag) subsidiaries = session.query(Subsidiary)\ .options(joinedload(Subsidiary.commerce)\ .joinedload(Commerce.tags)).all() print 'All Subs: ', subsidiaries subsidiaries = session.query(Subsidiary)\ .options(joinedload(Subsidiary.commerce)\ .joinedload(Commerce.tags))\ .filter(Tag.id == tag1.id) print 'Filtered Subs: ', subsidiaries # SELECT subsidiary.id AS subsidiary_id, subsidiary.name AS subsidiary_name, # tag_1.id AS tag_1_id, tag_1.name AS tag_1_name,
if __name__ == "__main__": engine = create_engine("sqlite://") ModelBase.metadata.create_all(engine) Session = sessionmaker(bind=engine) session = Session() user = User(name="user") session.add(user) session.commit() task1 = Task(title="task1", description="?", user_id=user.id) session.add(task1) session.commit() delete_task(session, task1.id) print get_sql_table_data(session, Task) task2 = Task(title="task1", description="?", user_id=user.id) session.add(task2) post1 = Post(body="post1", user_id=user.id) session.add(post1) post2 = Post(body="post2", user_id=user.id) session.add(post2) task2.posts = [post1, post2] session.commit() print post1.tasks, task2.posts print 'Task:', get_sql_table_data(session, Task) print 'Post:', get_sql_table_data(session, Post) # print get_sql_table_data(session, tasks_posts)
'polymorphic_identity': False } class OrganizationUser(BaseUser): # Organization Fields __mapper_args__ = { 'polymorphic_identity': True } if __name__ == "__main__": engine = create_engine("sqlite://") ModelBase.metadata.create_all(engine) Session = sessionmaker(bind=engine) sql = Session() #sql = sqldb.get_session() customer1 = CustomerUser() sql.add(customer1) customer2 = CustomerUser() sql.add(customer2) organization = OrganizationUser() organization.customers = [customer1, customer2] sql.add(organization) sql.commit() print get_sql_table_data(sql, BaseUser) print organization.customers print customer1.organization print customer2.organization
id = db.Column(db.Integer, primary_key=True) connection_type = db.Column(db.SmallInteger, nullable=False, default=CONNECTION_TYPES['cellular']) @declared_attr def __table_args__(cls): return (db.CheckConstraint( cls.connection_type.in_(cls.CONNECTION_TYPES.values())), ) + FilteringMixin.__table_args__ if __name__ == "__main__": engine = create_engine("sqlite://") ModelBase.metadata.create_all(engine) Session = sessionmaker(bind=engine) session = Session() # saves the record with defaults conn_type = FilteredConnectionType() session.add(conn_type) session.commit() print get_sql_table_data(session, FilteredConnectionType) # raises an error: Check constraint failed conn_type = FilteredConnectionType(filter_type=3) session.add(conn_type) session.commit() print get_sql_table_data(session, FilteredConnectionType)
if __name__ == "__main__": engine = create_engine("sqlite://") ModelBase.metadata.create_all(engine) Session = sessionmaker(bind=engine) db_session = Session() foo1 = FooTest() db_session.add(foo1) db_session.commit() foo2 = FooTest(parent_id=foo1.id) foo3 = FooTest(parent_id=foo1.id) db_session.add(foo2) db_session.add(foo3) db_session.commit() bar = BarTest() db_session.add(bar) db_session.commit() print get_sql_table_data(db_session, TestParent) #print get_sql_table_data(db_session, BarTest) mytest = db_session.query(TestParent).get(bar.id) # is an instance of BarTest db_session.delete(mytest) db_session.commit() #print get_sql_table_data(db_session, BarTest)
# Changed to db.Integer from db.BigInteger because of SQLite id = db.Column(db.Integer, primary_key=True) connection_type = db.Column(db.SmallInteger, nullable=False, default=CONNECTION_TYPES['cellular']) @declared_attr def __table_args__(cls): return ( db.CheckConstraint(cls.connection_type.in_(cls.CONNECTION_TYPES.values())), ) + FilteringMixin.__table_args__ if __name__ == "__main__": engine = create_engine("sqlite://") ModelBase.metadata.create_all(engine) Session = sessionmaker(bind=engine) session = Session() # saves the record with defaults conn_type = FilteredConnectionType() session.add(conn_type) session.commit() print get_sql_table_data(session, FilteredConnectionType) # raises an error: Check constraint failed conn_type = FilteredConnectionType(filter_type=3) session.add(conn_type) session.commit() print get_sql_table_data(session, FilteredConnectionType)
if __name__ == "__main__": engine = create_engine("sqlite://") ModelBase.metadata.create_all(engine) Session = sessionmaker(bind=engine) db_session = Session() foo1 = FooTest() db_session.add(foo1) db_session.commit() foo2 = FooTest(parent_id=foo1.id) foo3 = FooTest(parent_id=foo1.id) db_session.add(foo2) db_session.add(foo3) db_session.commit() bar = BarTest() db_session.add(bar) db_session.commit() print get_sql_table_data(db_session, TestParent) #print get_sql_table_data(db_session, BarTest) mytest = db_session.query(TestParent).get( bar.id) # is an instance of BarTest db_session.delete(mytest) db_session.commit() #print get_sql_table_data(db_session, BarTest)
if __name__ == "__main__": engine = create_engine("sqlite://") ModelBase.metadata.create_all(engine) Session = sessionmaker(bind=engine) session = Session() user = User(name="user") session.add(user) session.commit() task1 = Task(title="task1", description="?", user_id=user.id) session.add(task1) session.commit() delete_task(session, task1.id) print get_sql_table_data(session, Task) task2 = Task(title="task1", description="?", user_id=user.id) session.add(task2) post1 = Post(body="post1", user_id=user.id) session.add(post1) post2 = Post(body="post2", user_id=user.id) session.add(post2) task2.posts = [post1, post2] session.commit() print post1.tasks, task2.posts print "Task:", get_sql_table_data(session, Task) print "Post:", get_sql_table_data(session, Post) # print get_sql_table_data(session, tasks_posts)