国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

擼了個(gè) django 數(shù)據(jù)遷移工具 django-supertube

vpants / 3439人閱讀

摘要:擼了個(gè)數(shù)據(jù)遷移工具支持字段映射和動(dòng)態(tài)字段轉(zhuǎn)化。歡迎,起因最近參與了公司系統(tǒng)的重構(gòu),重構(gòu)基本完成后,由于數(shù)據(jù)庫(kù)表結(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ù)庫(kù)表結(jié)構(gòu)變化很大,很多小組都需要數(shù)據(jù)遷移。如果都寫 sql 的話,要做很多重復(fù)的工作。于是去搜了下 django 有沒(méi)有相關(guān)的工具,很遺憾沒(méi)有搜到,于是自己擼了這個(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)映射

批量寫入

支持修改字段映射

支持通過(guò)調(diào)用函數(shù)的方式

自動(dòng)修復(fù) postgres sequence

實(shí)時(shí)進(jìn)度提醒

數(shù)據(jù)量大時(shí)支持并行執(zhí)行(開發(fā)中)

django-supertube

A powerful django migration tool to migrate from latency database to new databse using awesome django ORM

例子 settings.py
DATABASES = {
    "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ù)庫(kù)的 LatencyUser 取數(shù)據(jù)遷移到 default 數(shù)據(jù)庫(kù)的 User 中:
  - 新加 username 字段,數(shù)據(jù)值從原 email 字段取
  - 修改 age 字段變?yōu)樵瓉?lái)的 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 更多說(shuō)明和例子參考這個(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/42084.html

相關(guān)文章

  • 了個(gè) django 數(shù)據(jù)遷移工具 django-supertube

    摘要:擼了個(gè)數(shù)據(jù)遷移工具支持字段映射和動(dòng)態(tài)字段轉(zhuǎn)化。歡迎,起因最近參與了公司系統(tǒng)的重構(gòu),重構(gòu)基本完成后,由于數(shù)據(jù)庫(kù)表結(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/... ...

    Profeel 評(píng)論0 收藏0
  • 單手了個(gè)springboot+mybatis+druid

    摘要:配置想想,我們需要哪些數(shù)據(jù)庫(kù)要用到,數(shù)據(jù)庫(kù)連接池要用到橋接器要用到,因此要倉(cāng)庫(kù)點(diǎn)我去倉(cāng)庫(kù)中找到搜索這些加進(jìn)去。 本文旨在用最通俗的語(yǔ)言講述最枯燥的基本知識(shí) 最近身邊的程序員掀起了學(xué)習(xí)springboot的熱潮,說(shuō)什么學(xué)會(huì)了springboot在大街上就可以橫著走、什么有了springboot媽媽再也不擔(dān)心我的編程了、什么BAT都喜歡的框架...聽得作者那個(gè)心癢癢的,于是找了個(gè)時(shí)間,下載...

    adie 評(píng)論0 收藏0
  • [小程序]擼了第一個(gè)小程序

    摘要:豆瓣這幾天看了下小程序的文檔,然后花了點(diǎn)時(shí)間寫了個(gè)沒(méi)什么含量的小程序。后來(lái)選擇了豆瓣,又發(fā)現(xiàn)小程序屏蔽了豆瓣的,好在網(wǎng)上有大神架了代理服務(wù)器。 豆瓣API 這幾天看了下小程序的文檔,然后花了點(diǎn)時(shí)間寫了個(gè)沒(méi)什么含量的小程序。本來(lái)想自己寫下API接口,但是小程序請(qǐng)求的域名既要求備案又要求HTTPS,太麻煩遂放棄。后來(lái)選擇了豆瓣API,又發(fā)現(xiàn)小程序屏蔽了豆瓣的API,好在網(wǎng)上有大神架了代理服...

    woshicixide 評(píng)論0 收藏0
  • Python學(xué)習(xí)之路17-Django入門

    摘要:編程從入門到實(shí)踐筆記。執(zhí)行命令后,項(xiàng)目的根目錄下會(huì)多出一個(gè)名為的數(shù)據(jù)庫(kù)文件。下面創(chuàng)建一個(gè)主題類用戶學(xué)習(xí)的主題返回模型的字符串表示類是中的一個(gè)定義了模型基本功能的類。這種交互式環(huán)境稱為,常用語(yǔ)測(cè)試項(xiàng)目和排除故障。 《Python編程:從入門到實(shí)踐》筆記。從本篇開始將是該書的最后一個(gè)項(xiàng)目,將用3篇文章來(lái)介紹Django的基礎(chǔ)。完成一個(gè)學(xué)習(xí)筆記的小網(wǎng)站。 1. 前言 在本篇中,我們將: 用...

    shadowbook 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<