Below is the mwe (assuming session and engine):
metadata=MetaData()
class node(Base):
__tablename__ = 'nodes_tbl'
pid = Column(Integer)
__table_args__ = (
PrimaryKeyConstraint('pid'),
{},
)
for i in range(0,100):
session.add(node(i))
visited_tbl = Table('visited480', metadata, Column('visited', Integer, primary_key=True), Column('level', Integer, p\
rimary_key=False))
metadata.create_all(engine)
#this works
session.execute(visited_tbl.insert().from_select(['visited', 'level'], session.query(node, sqlalchemy.sql.expression\
.literal_column('1').label('l')).filter(node.pid > 50)))
#this fails; possibly because of zero items
session.execute(visited_tbl.insert().from_select(['visited', 'level'], session.query(node, sqlalchemy.sql.expression\
.literal_column('1').label('l')).filter(node.pid > 100)))
The error I get is TypeError: 'NoneType' object has no attribute __getitem__
What is confusing is why is Python showing up between the select and insert statement. Shouldn't it create an SQL and let the DB handle it?