我应该如何使用Peewee在表格之间移动记录?

时间:2018-01-31 09:58:16

标签: python peewee

我有两个字段相同的表格。一个用于活跃用户,一个用于存档用户:

 class BaseClass(Model)
      class Meta:
           database = db

 class User(BaseClass):
      name = CharField()
      # Various other fields

 class UserArchive(BaseClass):
      name = CharField()
      # Identical fields to User

用户添加如下:

 User.create(name = "Tim")

但是当我需要将用户从User移动到UserArchive时,我会这样做:

 user = User.get(User.name == "Tim")
 user_data = user._data
 del user_data["id"]
 UserArchive.create(**user_data)
 user.delete_instance()

这感觉有点麻烦。是否有推荐的方法将记录从一个表移动到另一个表?

1 个答案:

答案 0 :(得分:1)

UserArchive.insert_from(
   query=User.select(User.name).where(User.active == False),
   columns=[UserArchive.name])

生成

INSERT INTO userarchive ("name") SELECT "name" FROM user WHERE "active" = false;

提供您自己的where子句以满足您的需求。当然,您仍然需要删除用户行。