Оптимизация промывки: единая много рядовая вставка на таблицу, несмотря на Cascade = 'All'Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Оптимизация промывки: единая много рядовая вставка на таблицу, несмотря на Cascade = 'All'

Сообщение Anonymous »

Я хотел бы оптимизировать это так, чтобы каждая таблица (например, Trans, Scripts) использует одну вставку в ... значения (...), (...), (...) оператор, вместо нескольких однорядных вставков. session.flush ().
Из-за этого я не могу использовать bulk_save_objects, поскольку он не поддерживает отношения или правильно обрабатывает первичное назначение ключей. />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()


Подробнее здесь: https://stackoverflow.com/questions/796 ... ascade-all
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»