问题:如何仅将尚未在数据库中的记录保存到数据库中?

我正在使用烧瓶,并开始将 SQLalchemy 用于我的数据库。我有一个庞大的字典列表,如下所示:

data = [{'id': '3242342342', 'name': 'sfsdfs fsdcd'},
        {'id': '2131231221', 'name': 'sfsddddfs fsdcd'},
        {'id': '3434343544', 'name': 'sfsfdgfddfs fsdcd'},
        {'id': '5465443545', 'name': 'sfsiiiiiiidfs fsdcd'}]

我有这样的课:

class Record(db.Model):
    id = db.Column(db.String(20), primary_key=True)
    name = db.Column(db.String(50))

我的任务是处理来自data的所有记录,如果它们不在数据库中,则添加它们,如果它们在则更新。这样做的正确方法是什么?谢谢

解答

合并功能就是你想要的。

http://docs.sqlalchemy.org/en/latest/orm/session_state_management.html#unitofwork-merging

for elem in data:
  tmp = Record(id=elem['id'], name=['name'])
  session.merge(tmp)

当然,稍后再提交。

Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐