摘要:撸了个数据迁移工具支持字段映射和动态字段转化。欢迎,起因最近参与了公司系统的重构,重构基本完成后,由于数据库表结构变化很大,很多小组都需要数据迁移。主要功能使用强大的系统灵活的进行数据迁移工作。
撸了个 django 数据迁移工具 django-supertube
支持字段映射和动态字段转化。 欢迎 star,issue
https://github.com/FingerLiu/...
最近参与了公司系统的重构,重构基本完成后,由于数据库表结构变化很大,很多小组都需要数据迁移。如果都写 sql 的话,要做很多重复的工作。于是去搜了下 django 有没有相关的工具,很遗憾没有搜到,于是自己撸了这个数据迁移的轮子。
主要功能A powerful django migration tool to migrate from latency database to new databse using awesome django ORM
使用 django 强大的 ORM 系统灵活的进行数据迁移工作。
目前包含以下功能点:
支持相同字段自动映射
批量写入
支持修改字段映射
支持通过调用函数的方式
自动修复 postgres sequence
实时进度提醒
数据量大时支持并行执行(开发中)
django-supertubeA powerful django migration tool to migrate from latency database to new databse using awesome django ORM
例子 settings.pyDATABASES = { "default": config("DATABASE_URL", cast=db_url), "latency": config("LATENCY_DATABASE_URL", cast=db_url) }management/commands/mig_01_user.py
from django.utils import timezone from si.tools.supertube import SuperTube, TubeSet """ class LatencyUser: email password age class User: email age username password is_admin create_datetime 例子从 latency 数据库的 LatencyUser 取数据迁移到 default 数据库的 User 中: - 新加 username 字段,数据值从原 email 字段取 - 修改 age 字段变为原来的 age+1 - 新加 create_datetime 字段 - 新加 is_admin 字段,默认值为 False """ class Command(BaseCommand): def handle(self, *args, **options): kwargs = { "mapping": { "username": "email", "age": lambda obj: obj.age + 1, "create_datetime": timezone.now()}, "defaults": {"is_admin": False} "source_db": "whistler" } st = SuperTube(LatencyUser, User, **kwargs) st.run(stop_on_error=True)
迁移工具 SuperTube 和 TubeSet 更多说明和例子参考这个文档
一个为 latency 中的旧数据建表的例子:class Order(models.Model): sn = models.CharField(u"领用单编号", max_length=100) created = models.DateTimeField(u"创建时间", auto_now_add=True) apply_qty = models.IntegerField(u"计划领用数量", blank=True, null=True) # TODO 1 将原 model 中的外键字段名改为 原字段名+_id ,类型改为 IntegerField # batch = models.ForeignKey("stock.Batch", blank=True, null=True) batch_id = models.IntegerField("stock.Batch", blank=True, null=True) purpose = models.PositiveIntegerField(u"领用用途", choices=PURPOSES, blank=True, null=True) # platform = models.ForeignKey("si.Platform", blank=True, null=True, related_name="+") platform_id = models.IntegerField("si.Platform", blank=True, null=True) def __unicode__(self): return self.sn class Meta: verbose_name = u"Order" # TODO 2 注释掉原表中的 unique_together # unique_together = ( # ("platform", "request_id"), # ("platform", "outer_id"), # ) # TODO 3 managed 设为 False managed = False # TODO 4 指定 db table db_table = "cardbox_applyvoucher"
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/42084.html
摘要:撸了个数据迁移工具支持字段映射和动态字段转化。欢迎,起因最近参与了公司系统的重构,重构基本完成后,由于数据库表结构变化很大,很多小组都需要数据迁移。主要功能使用强大的系统灵活的进行数据迁移工作。 撸了个 django 数据迁移工具 django-supertube 支持字段映射和动态字段转化。 欢迎 star,issuehttps://github.com/FingerLiu/... ...
摘要:配置想想,我们需要哪些数据库要用到,数据库连接池要用到桥接器要用到,因此要仓库点我去仓库中找到搜索这些加进去。 本文旨在用最通俗的语言讲述最枯燥的基本知识 最近身边的程序员掀起了学习springboot的热潮,说什么学会了springboot在大街上就可以横着走、什么有了springboot妈妈再也不担心我的编程了、什么BAT都喜欢的框架...听得作者那个心痒痒的,于是找了个时间,下载...
摘要:豆瓣这几天看了下小程序的文档,然后花了点时间写了个没什么含量的小程序。后来选择了豆瓣,又发现小程序屏蔽了豆瓣的,好在网上有大神架了代理服务器。 豆瓣API 这几天看了下小程序的文档,然后花了点时间写了个没什么含量的小程序。本来想自己写下API接口,但是小程序请求的域名既要求备案又要求HTTPS,太麻烦遂放弃。后来选择了豆瓣API,又发现小程序屏蔽了豆瓣的API,好在网上有大神架了代理服...
摘要:编程从入门到实践笔记。执行命令后,项目的根目录下会多出一个名为的数据库文件。下面创建一个主题类用户学习的主题返回模型的字符串表示类是中的一个定义了模型基本功能的类。这种交互式环境称为,常用语测试项目和排除故障。 《Python编程:从入门到实践》笔记。从本篇开始将是该书的最后一个项目,将用3篇文章来介绍Django的基础。完成一个学习笔记的小网站。 1. 前言 在本篇中,我们将: 用...
阅读 2983·2021-10-19 11:46
阅读 978·2021-08-03 14:03
阅读 2932·2021-06-11 18:08
阅读 2903·2019-08-29 13:52
阅读 2740·2019-08-29 12:49
阅读 478·2019-08-26 13:56
阅读 922·2019-08-26 13:41
阅读 847·2019-08-26 13:35