<p><a href="http://docs.sqlalchemy.org/en/latest/orm/session_api.html#sqlalchemy.orm.session.Session.bulk_save_objects" rel="noreferrer">^{<cd1>}</a>对于您的用例来说是太低级别的API,它将持久化多个模型对象<em>及其关系</em>。文件明确说明了这一点:</p>
<blockquote>
<p><strong>Warning</strong></p>
<p>The bulk save feature allows for a lower-latency INSERT/UPDATE of rows at the expense of most other unit-of-work features. Features such as object management, <strong>relationship handling</strong>, and SQL clause support are <strong>silently omitted</strong> in favor of raw INSERT/UPDATES of records.</p>
<p>Please read the list of caveats at <a href="http://docs.sqlalchemy.org/en/latest/orm/persistence_techniques.html#bulk-operations" rel="noreferrer">Bulk Operations</a> before using this method, and fully test and confirm the functionality of all code developed using these systems.</p>
</blockquote>
<p>您应该使用<a href="http://docs.sqlalchemy.org/en/latest/orm/session_api.html#sqlalchemy.orm.session.Session.add_all" rel="noreferrer">^{<cd2>}</a>将实例集合添加到会话中。它将一次处理一个实例,但这是您为关系处理等高级功能付出的代价</p>
<p>因此,与其</p>
<pre><code>session.bulk_save_objects(showtime_lists)
session.commit()
</code></pre>
<p>做</p>
<pre><code>session.add_all(showtime_lists)
session.commit()
</code></pre>