【问题标题】:python ORM allowing for table creation and bulk inserting?python ORM允许创建表和批量插入?
【发布时间】:2009-06-18 15:16:00
【问题描述】:

我正在寻找一个允许我进行批量插入以及基于 python 类创建代码的 ORM。我尝试了 sqlobject,它可以很好地创建表,但是对于我想要插入的数据量来说,插入速度慢得让人无法接受。如果这样的 ORM 不存在任何可以帮助处理诸如清理输入和构建 SQL 字符串之类的类的指针,我们将不胜感激。

【问题讨论】:

  • “批量”和“ORM”通常不会一起使用。取决于您所说的批量是什么意思,但是大多数人在想到批量时会想到原始 SQL,这使得 ORM 变得困难。你什么意思?你能给出你想做的代码示例吗?
  • SQLObject 在创建时将每个对象插入到数据库中。我想一次插入很多对象,或者至少设置事务,这样每次插入都不会在进入下一个之前提交。

标签: python database orm


【解决方案1】:

你可能想试试SQLAlchemy

【讨论】:

  • 我们使用 SQLAlchemy,它适用于表创建和批量插入。根据数据库(和 DBAPI),SQLQAlchemy 有一个用于批量插入的 executemany(),请参阅 sqlalchemy.org/docs/05/…
【解决方案2】:

我相信 sqlalchemy 有批量插入,但我从未使用过它。但是,根据this reviewer,它在基准测试中表现出色。

编辑:似乎不清楚他是如何使用 SQLAlchemy...无论是实际的 ORM 还是只是查询代码。阅读博客条目,我认为重点是使用 ORM,但一些评论者似乎认为他正在使用查询代码,如果是 ORM,它会慢得多。

【讨论】:

    【解决方案3】:

    我不熟悉 sqlobject,但对于批量插入,您通常希望确保这是在事务中完成的,因此您不必为每个操作提交。

    在 sqlobject 中,您似乎可以通过使用事务对象来控制提交来做到这一点。您可能还需要关闭默认的 AutoCommit 标志才能正常运行。

    http://www.sqlobject.org/SQLObject.html#id45

    【讨论】:

      猜你喜欢
      • 2019-10-24
      • 2019-05-16
      • 2011-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-16
      相关资源
      最近更新 更多