Optimieren von Flush: Einzel-Multi-Reihen-Einsatz pro Tabelle trotz Cascade = 'All' 'Python

Python-Programme
Anonymous
 Optimieren von Flush: Einzel-Multi-Reihen-Einsatz pro Tabelle trotz Cascade = 'All' '

Post by Anonymous »

Ich möchte dies so optimieren, dass jede Tabelle (z. B. trans, Skripte) einen einzelnen Einfügen in ... Werte (...), (...), (...) verwendet, anstelle von mehreren Einzelreihen-Einsätzen. Session.flush (). < /p>
Aus diesem Grund kann ich keine bulk_save_objects verwenden, da es keine Beziehungen unterstützt oder die Primärschlüsselzuweisung ordnungsgemäß behandelt.

Code: Select all

Base = declarative_base()

class Config(Base):
__tablename__ = 'configs'
id = Column(Integer, primary_key=True)
name = Column(String)
trans = relationship("Trans", back_populates="config", cascade="all")
scripts = relationship("Script", back_populates="config", cascade="all")

class Trans(Base):
__tablename__ = 'trans'
id = Column(Integer, primary_key=True)
config_id = Column(Integer, ForeignKey("configs.id"))
name = Column(String)
config = relationship("Config", back_populates="trans")

class Script(Base):
__tablename__ = 'scripts'
id = Column(Integer, primary_key=True)
config_id = Column(Integer, ForeignKey("configs.id"))
name = Column(String)
config = relationship("Config", back_populates="scripts")

engine = create_engine("sqlite:///:memory:", echo=True)
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine, autoflush=True)
session = Session()

cfg = Config(name="MyConfig")
cfg.trans.append(Trans(name="T1"))
cfg.trans.append(Trans(name="T2"))
cfg.scripts.append(Script(name="S1"))
cfg.scripts.append(Script(name="S2"))

# others children will be picked up via cascade
session.add(cfg)
session.flush()

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post