Python编程:利用peewee的model_to_dict进行数据迁移
  TEZNKK3IfmPf 2023年11月15日 27 0


"""
需求:两个结构相同的表A, B,需要从 A表 将数据迁移到 B表
"""

from peewee import *
from playhouse.shortcuts import model_to_dict
from conf import BaseModel  # 配置好的数据库信息


class AModel(BaseModel):
    name = CharField(default="")
    age = IntegerField(default=0) 

    class Meta:
        db_table = 'a_table'


class BModel(BaseModel):
    name = CharField(default="")  
    age = IntegerField(default=0)  

    class Meta:
        db_table = 'b_table'


if __name__ == '__main__':
    for page in range(1, 50):  # 页数,要比实际页数多一页,以免数据漏掉
        rows = AModel.select().paginate(page=page, paginate_by=1000)
        # 随机取出一定数量的数据
        lst = []
        for row in rows:
            dct = model_to_dict(row)
            dct.pop("id")  # 删除字典中的id字段,这个默认会自增

            # 通过 md5 字段判断,避免重复插入
            ret = BModel.filter(BModel.md5 == dct["md5"]).first()
            if ret is None:
                lst.append(dct)

        if len(lst) > 0:
            BModel.insert_many(lst).execute()

        print "数据拷贝完成", "取出数据:%d" % len(rows), "成功插入%d" % len(lst)

    print "数据迁移完成"

关于model_to_dict的用法,参考:

Python编程:playhouse模块转peewee的model对象为字典dict

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年03月29日   122   0   0 sed数据
  TEZNKK3IfmPf   2023年11月15日   30   0   0 数据redis
TEZNKK3IfmPf