摘要:擼了個數據遷移工具支持字段映射和動態字段轉化。歡迎,起因最近參與了公司系統的重構,重構基本完成后,由于數據庫表結構變化很大,很多小組都需要數據遷移。主要功能使用強大的系統靈活的進行數據遷移工作。
擼了個 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"
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38999.html
摘要:擼了個數據遷移工具支持字段映射和動態字段轉化。歡迎,起因最近參與了公司系統的重構,重構基本完成后,由于數據庫表結構變化很大,很多小組都需要數據遷移。主要功能使用強大的系統靈活的進行數據遷移工作。 擼了個 django 數據遷移工具 django-supertube 支持字段映射和動態字段轉化。 歡迎 star,issuehttps://github.com/FingerLiu/... ...
摘要:配置想想,我們需要哪些數據庫要用到,數據庫連接池要用到橋接器要用到,因此要倉庫點我去倉庫中找到搜索這些加進去。 本文旨在用最通俗的語言講述最枯燥的基本知識 最近身邊的程序員掀起了學習springboot的熱潮,說什么學會了springboot在大街上就可以橫著走、什么有了springboot媽媽再也不擔心我的編程了、什么BAT都喜歡的框架...聽得作者那個心癢癢的,于是找了個時間,下載...
摘要:豆瓣這幾天看了下小程序的文檔,然后花了點時間寫了個沒什么含量的小程序。后來選擇了豆瓣,又發現小程序屏蔽了豆瓣的,好在網上有大神架了代理服務器。 豆瓣API 這幾天看了下小程序的文檔,然后花了點時間寫了個沒什么含量的小程序。本來想自己寫下API接口,但是小程序請求的域名既要求備案又要求HTTPS,太麻煩遂放棄。后來選擇了豆瓣API,又發現小程序屏蔽了豆瓣的API,好在網上有大神架了代理服...
摘要:編程從入門到實踐筆記。執行命令后,項目的根目錄下會多出一個名為的數據庫文件。下面創建一個主題類用戶學習的主題返回模型的字符串表示類是中的一個定義了模型基本功能的類。這種交互式環境稱為,常用語測試項目和排除故障。 《Python編程:從入門到實踐》筆記。從本篇開始將是該書的最后一個項目,將用3篇文章來介紹Django的基礎。完成一個學習筆記的小網站。 1. 前言 在本篇中,我們將: 用...
閱讀 3110·2021-11-24 09:39
閱讀 968·2021-09-07 10:20
閱讀 2389·2021-08-23 09:45
閱讀 2255·2021-08-05 10:00
閱讀 566·2019-08-29 16:36
閱讀 833·2019-08-29 11:12
閱讀 2813·2019-08-26 11:34
閱讀 1839·2019-08-26 10:56