Python 如何在sqlalchemy中编辑表的所有记录?
考虑以下代码:Python 如何在sqlalchemy中编辑表的所有记录?,python,sqlalchemy,Python,Sqlalchemy,考虑以下代码: for entry in db.session.query(MyTable): entry.fieldX = calculate(entry.fieldA, entry.fieldB, entry.fieldC) db.session.add(entry) ### IS this line required or is it implicit db.session.commit() 是否需要显式添加到会话?以下是更好的方法吗 entries = [] for entry
for entry in db.session.query(MyTable):
entry.fieldX = calculate(entry.fieldA, entry.fieldB, entry.fieldC)
db.session.add(entry) ### IS this line required or is it implicit
db.session.commit()
是否需要显式添加到会话?以下是更好的方法吗
entries = []
for entry in db.session.query(MyTable):
entry.fieldX = calculate(entry.fieldA, entry.fieldB, entry.fieldC)
entries.append(entry)
db.session.add_all(entries)
db.session.commit()
您不需要将
条目
对象添加到会话中,因为它们已经在加载它们的会话
中。因此,这就足够了:
for entry in db.session.query(MyTable):
entry.fieldX = calculate(entry.fieldA, entry.fieldB, entry.fieldC)
db.session.commit()
生成一个显式的update语句供DBMS执行可能更有效,这将节省程序获取每一行并再次保存它的工作。我们可以看看关于
calculate()
函数实现的一些细节吗?@IfLoop-Hmm.calculate实际上使用了其他映射。因此,在这种情况下,这将无济于事。