摘要:擼了個(gè)數(shù)據(jù)遷移工具支持字段映射和動(dòng)態(tài)字段轉(zhuǎn)化。歡迎,起因最近參與了公司系統(tǒng)的重構(gòu),重構(gòu)基本完成后,由于數(shù)據(jù)庫表結(jié)構(gòu)變化很大,很多小組都需要數(shù)據(jù)遷移。主要功能使用強(qiáng)大的系統(tǒng)靈活的進(jìn)行數(shù)據(jù)遷移工作。
擼了個(gè) django 數(shù)據(jù)遷移工具 django-supertube
支持字段映射和動(dòng)態(tài)字段轉(zhuǎn)化。 歡迎 star,issue
https://github.com/FingerLiu/...
最近參與了公司系統(tǒng)的重構(gòu),重構(gòu)基本完成后,由于數(shù)據(jù)庫表結(jié)構(gòu)變化很大,很多小組都需要數(shù)據(jù)遷移。如果都寫 sql 的話,要做很多重復(fù)的工作。于是去搜了下 django 有沒有相關(guān)的工具,很遺憾沒有搜到,于是自己擼了這個(gè)數(shù)據(jù)遷移的輪子。
主要功能A powerful django migration tool to migrate from latency database to new databse using awesome django ORM
使用 django 強(qiáng)大的 ORM 系統(tǒng)靈活的進(jìn)行數(shù)據(jù)遷移工作。
目前包含以下功能點(diǎn):
支持相同字段自動(dòng)映射
批量寫入
支持修改字段映射
支持通過調(diào)用函數(shù)的方式
自動(dòng)修復(fù) postgres sequence
實(shí)時(shí)進(jìn)度提醒
數(shù)據(jù)量大時(shí)支持并行執(zhí)行(開發(fā)中)
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 數(shù)據(jù)庫的 LatencyUser 取數(shù)據(jù)遷移到 default 數(shù)據(jù)庫的 User 中: - 新加 username 字段,數(shù)據(jù)值從原 email 字段取 - 修改 age 字段變?yōu)樵瓉淼?age+1 - 新加 create_datetime 字段 - 新加 is_admin 字段,默認(rèn)值為 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 更多說明和例子參考這個(gè)文檔
一個(gè)為 latency 中的舊數(shù)據(jù)建表的例子:class Order(models.Model): sn = models.CharField(u"領(lǐng)用單編號(hào)", max_length=100) created = models.DateTimeField(u"創(chuàng)建時(shí)間", auto_now_add=True) apply_qty = models.IntegerField(u"計(jì)劃領(lǐng)用數(shù)量", 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"領(lǐng)用用途", 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 設(shè)為 False managed = False # TODO 4 指定 db table db_table = "cardbox_applyvoucher"
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/38999.html
摘要:擼了個(gè)數(shù)據(jù)遷移工具支持字段映射和動(dòng)態(tài)字段轉(zhuǎn)化。歡迎,起因最近參與了公司系統(tǒng)的重構(gòu),重構(gòu)基本完成后,由于數(shù)據(jù)庫表結(jié)構(gòu)變化很大,很多小組都需要數(shù)據(jù)遷移。主要功能使用強(qiáng)大的系統(tǒng)靈活的進(jìn)行數(shù)據(jù)遷移工作。 擼了個(gè) django 數(shù)據(jù)遷移工具 django-supertube 支持字段映射和動(dòng)態(tài)字段轉(zhuǎn)化。 歡迎 star,issuehttps://github.com/FingerLiu/... ...
摘要:配置想想,我們需要哪些數(shù)據(jù)庫要用到,數(shù)據(jù)庫連接池要用到橋接器要用到,因此要倉庫點(diǎn)我去倉庫中找到搜索這些加進(jìn)去。 本文旨在用最通俗的語言講述最枯燥的基本知識(shí) 最近身邊的程序員掀起了學(xué)習(xí)springboot的熱潮,說什么學(xué)會(huì)了springboot在大街上就可以橫著走、什么有了springboot媽媽再也不擔(dān)心我的編程了、什么BAT都喜歡的框架...聽得作者那個(gè)心癢癢的,于是找了個(gè)時(shí)間,下載...
摘要:豆瓣這幾天看了下小程序的文檔,然后花了點(diǎn)時(shí)間寫了個(gè)沒什么含量的小程序。后來選擇了豆瓣,又發(fā)現(xiàn)小程序屏蔽了豆瓣的,好在網(wǎng)上有大神架了代理服務(wù)器。 豆瓣API 這幾天看了下小程序的文檔,然后花了點(diǎn)時(shí)間寫了個(gè)沒什么含量的小程序。本來想自己寫下API接口,但是小程序請(qǐng)求的域名既要求備案又要求HTTPS,太麻煩遂放棄。后來選擇了豆瓣API,又發(fā)現(xiàn)小程序屏蔽了豆瓣的API,好在網(wǎng)上有大神架了代理服...
摘要:編程從入門到實(shí)踐筆記。執(zhí)行命令后,項(xiàng)目的根目錄下會(huì)多出一個(gè)名為的數(shù)據(jù)庫文件。下面創(chuàng)建一個(gè)主題類用戶學(xué)習(xí)的主題返回模型的字符串表示類是中的一個(gè)定義了模型基本功能的類。這種交互式環(huán)境稱為,常用語測(cè)試項(xiàng)目和排除故障。 《Python編程:從入門到實(shí)踐》筆記。從本篇開始將是該書的最后一個(gè)項(xiàng)目,將用3篇文章來介紹Django的基礎(chǔ)。完成一個(gè)學(xué)習(xí)筆記的小網(wǎng)站。 1. 前言 在本篇中,我們將: 用...
閱讀 3117·2021-11-24 09:39
閱讀 979·2021-09-07 10:20
閱讀 2400·2021-08-23 09:45
閱讀 2273·2021-08-05 10:00
閱讀 575·2019-08-29 16:36
閱讀 840·2019-08-29 11:12
閱讀 2824·2019-08-26 11:34
閱讀 1844·2019-08-26 10:56