<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        將Django使用的數據庫從MySQL遷移到PostgreSQL的教程

        來源:懂視網 責編:小采 時間:2020-11-27 14:32:28
        文檔

        將Django使用的數據庫從MySQL遷移到PostgreSQL的教程

        將Django使用的數據庫從MySQL遷移到PostgreSQL的教程:我們已對 Django1.6 app完成了數據庫從mysql到PostgreSQL的遷移,如果你的環境很干凈,這個過程就會很簡單,只要允許syncdb 或者 migrate創建表,truncating表中的數據,然后運行dumpdata 和loaddatamanagement命令就完成了。 第一步,在
        推薦度:
        導讀將Django使用的數據庫從MySQL遷移到PostgreSQL的教程:我們已對 Django1.6 app完成了數據庫從mysql到PostgreSQL的遷移,如果你的環境很干凈,這個過程就會很簡單,只要允許syncdb 或者 migrate創建表,truncating表中的數據,然后運行dumpdata 和loaddatamanagement命令就完成了。 第一步,在

        我們已對 Django1.6 app完成了數據庫從mysql到PostgreSQL的遷移,如果你的環境很干凈,這個過程就會很簡單,只要允許syncdb 或者 migrate創建表,truncating表中的數據,然后運行dumpdata 和loaddatamanagement命令就完成了。
        第一步,在你的PostgreSQL數據庫中創建一個空的實例:

        CREATE DATABASE dbname OWNER rolename;
        

        第二步,在你的Django中給創建的數據庫加上配置

        在setting.py 中,我們這樣配置:

        DATABASES = {
         'default': {
         'ENGINE': 'django.db.backends.mysql',
         'NAME': 'dbname',
         'USER': 'dbuser',
         'PASSWORD': 'dbpass',
         'HOST': 'mysql.example.com',
         'PORT': '',
         },
         'postgresql': {
         'ENGINE': 'django.db.backends.postgresql_psycopg2',
         'NAME': 'dbname',
         'USER': 'dbuser',
         'PASSWORD': 'dbpass',
         'HOST': 'postgresql.example.com',
         'PORT': '',
         }
        }
        

        這樣我們就指定了以后名稱操作的是哪個數據庫。
        第三步,在PostgreSQL實例中創建表

        python manage.py syncdb --migrate --no-initial-data --database=postgresql
        

        在PostgreSQL中運行syncdb 和 migrations,這個過程并沒有初始數據。
        第四步,truncate新創建的表

        盡管我們在先前的步驟中指定了 –no-initial-data ,為了防止在遷移過程中用戶的自定義數據在未知情況下加入了表中,我們最好還是truncate一下新建的表,我們可以生成一個SQL腳本,運行:

        python manage.py sqlflush --database=postgresql
        
        

        第五步,從mysql中備份數據到JSON 文件中

        Django 有一個dumpdata命令,用它可以生成一個數據庫無關的備份,默認格式是JSON。

        python manage.py dumpdata --all --natural --indent=4 > dbname.json
        

        這里的 -all 參數是為了確保你在導出數據的過程中有可能有你自己的過濾和修改數據的需求,-natural 參數告訴Django使用natural keys(如果可用的話) –indent 參數是為了使輸出更加可讀。

        你也許想只導出特定的apps里的數據,或者只導出一個celery logs ,這樣的話,你就可以使用 –exclude參數,例如:

        python manage.py dumpdata --all --natural --exclude=djcelery --exclude=search.SearchLog --indent=4 > dbname.json
        

        第六步,加載JSON數據到PostgreSQL數據庫中

        python manage.py loaddata dbname.json --database=postgresql
        

        基本上遷移的過程就結束了,現在你只要修改一下你的數據庫配置,然后是PostgerSQL成為默認的數據庫。

        DATABASES = {
         'default': {
         'ENGINE': 'django.db.backends.postgresql_psycopg2',
         'NAME': 'dbname',
         'USER': 'dbuser',
         'PASSWORD': 'dbpass',
         'HOST': 'postgresql.example.com',
         'PORT': '',
         }
        }
        

        在我們的情況下,我們的數據庫不是很干凈,我們的數據庫是給一個PHP的遺留代碼創建的,我們現在還在一步步擺脫它,我們有一些Django之外的數據庫,并且都在被程序使用,為了把這些遷移到PostgreSQL中,我使用了這個工具,過程還是簡單一些。
        注意事項
        Django 信號

        你可能想禁止這些,當一個數據庫記錄創建的時候,你的程序可能就會發送給你的用過郵件,為了不打擾它們,在加載數據的時候,你需要保證它們被禁止了,Here's one way to handle this 這里我們使用了檢測器保證信號不會別觸發。
        約束(像非空,unique 和外鍵)

        我們的數據庫遷移過程碰到了很多這種問題,比如一個外鍵約束,但是其他的一個表不存在了,有一下空置的記錄,但是模型定義中不允許,比如復制的過程中存在unique約束,這些都需要手動干預,我必須使用SQL語句清除掉這些,Dumpdata 和loaddata 將會檢測到這些,所以你的數據庫必須是一個干凈的一致的狀態。

        主鍵的硬編碼

        這很痛苦,因為在我們的測試 suite中,到處都是主鍵的硬編碼,所以很多測試到失敗了,因為使用PostgreSQL 處理的序列的方法和mysql不太一樣,我必須手動修改700多個測試用例,大都是很簡單的修改但是很消耗時間。

        原生SQL語句

        幸運的是,我們只有一處使用了原生sql語句,有些mysql中的函數在PostgreSQL中不適用,我們只用修改為在PostgreSQl中相同功能的函數就可以了。

        大小寫敏感

        字符串比較在PostgreSQL中是大小寫敏感的,但是在Mysql中不是,我在遷移非Django數據表過程中也遇到了一些問題,索引創建的時候,命令需要id,但是字段的名字是Id(字母I),我只要重命名為id就可以了。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        將Django使用的數據庫從MySQL遷移到PostgreSQL的教程

        將Django使用的數據庫從MySQL遷移到PostgreSQL的教程:我們已對 Django1.6 app完成了數據庫從mysql到PostgreSQL的遷移,如果你的環境很干凈,這個過程就會很簡單,只要允許syncdb 或者 migrate創建表,truncating表中的數據,然后運行dumpdata 和loaddatamanagement命令就完成了。 第一步,在
        推薦度:
        標簽: 遷移 使用 數據庫
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲人成网7777777国产| 最刺激黄a大片免费网站| 国产成人精品123区免费视频| 亚洲美女视频网址| 最新黄色免费网站| 亚洲女人初试黑人巨高清| 久久福利资源网站免费看| 亚洲国产精品成人久久久| 两性刺激生活片免费视频| 亚洲狠狠成人综合网| 亚洲国产精品免费在线观看| 亚洲∧v久久久无码精品| 特级无码毛片免费视频尤物 | 亚洲小说区图片区另类春色| 一级毛片在线免费视频| 国产亚洲精久久久久久无码77777 国产亚洲精品成人AA片新蒲金 | 7777久久亚洲中文字幕| 女人18毛片免费观看| 最新亚洲人成无码网站| 国产a v无码专区亚洲av| a色毛片免费视频| 亚洲人成在线中文字幕| 日韩a级毛片免费视频| 国产精品福利片免费看| 亚洲精品美女在线观看播放| 无人在线观看完整免费版视频| 精品久久久久亚洲| 亚洲国产精品VA在线看黑人 | 精品香蕉在线观看免费| 在线视频亚洲一区| 亚洲妇熟XXXX妇色黄 | 四虎免费永久在线播放| 国产真人无码作爱免费视频| 91在线精品亚洲一区二区| 免费网站看v片在线香蕉| 男女拍拍拍免费视频网站| 亚洲AV无码国产精品色| 亚洲精品视频久久久| 国产精品成人免费福利| 国产精品九九久久免费视频 | 亚洲精品美女久久久久9999|