1

以下はmweです(セッションとエンジンを想定):

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)))

私が得るエラーは TypeError: 'NoneType' object has no attribute __getitem__ です

紛らわしいのは、select ステートメントと insert ステートメントの間に Python が表示される理由です。SQL を作成して DB に処理させるべきではありませんか?

4

0 に答える 0