10 資料庫遷移操作

2021-07-03 17:58:07 字數 2631 閱讀 3279

介紹就是這些,下面動手敲**。

1、建立遷移倉庫

先在虛擬環境中安裝flask-migrate:

(venv) $ pip install flask-migrate
在hello.py檔案中配置flask-migrate:

from flask.ext.migrate import migrate, migratecommand

#...

manager.add_command('db', migratecommand) #將migratecommand類附加到flask-script的manager物件上

在維護資料庫遷移之前,要使用init子命令建立遷移倉庫:

(venv) $ python hello.py db init (這是在windows系統上的演示)

creating directory e:\python27\flask\flasky\migrations ... done

creating directory e:\python27\flask\flasky\migrations\versions ... done

generating e:\python27\flask\flasky\migrations\alembic.ini ... done

generating e:\python27\flask\flasky\migrations\env.py ... done

generating e:\python27\flask\flasky\migrations\env.pyc ... done

generating e:\python27\flask\flasky\migrations\readme ... done

generating e:\python27\flask\flasky\migrations\script.py.mako ... done

please edit configuration/connection/logging settings in \

'e:\\python27\\flask\\flasky\\migrations\\alembic.ini' before proceeding.

這個命令建立了migrations資料夾,所有的遷移指令碼都存放在裡面。

2、建立遷移指令碼(migration script)

在alembic中,資料庫遷移用遷移指令碼表示。指令碼中有兩個函式,分別是upgrade()和downgrade()。upgrade()函式把遷移中的改動應用到資料庫中,downgrade()函式則將改動刪除。alembic具有新增和刪除改動的功能,因此資料庫可重設到修改歷史的任一點。自動建立的遷移會根據模型定義和資料庫當前狀態之間的差異生成upgrade()和downgrade()函式的內容。

migrate 子命令用來自動建立遷移指令碼:(此命令需要將data.sqlite檔案刪除方可正常執行)

(venv) $ python hello.py db migrate -m 'initial migration'

info [alembic.migration] context impl sqliteimpl.

info [alembic.migration] will assume non-transactional ddl.

info [alembic.autogenerate.compare] detected added table 'roles'

info [alembic.autogenerate.compare] detected added table 'users'

info [alembic.autogenerate.compare] detected added index 'ix_users_username' on

'['username']'

generating e:\python27\flask\flasky\migrations\versions\1ff2bdaa86ff_initial_migration.py ... done

執行完這個命令後,去檢視migrations/versions/資料夾,會發現建立了1ff2bdaa86ff_initial_migration.py指令碼檔案,就是傳說中的遷移指令碼(migration script)

3、更新資料庫

檢查並修正好遷移指令碼後,我們可以用 db upgrade 命令把遷移應用到資料庫中:

(vnev) $ python hello.py db upgrade

info [alembic.migration] context impl sqliteimpl.

info [alembic.migration] will assume non-transactional ddl.

info [alembic.migration] running upgrade none -> 1ff2bdaa86ff, initial migration

對第乙個遷移來說,其作用和呼叫db.create_all()方法一樣。但在後續的遷移中,upgrade命令能把改動應用到資料庫中,且不影響其中儲存的資料。

到此,完成了基礎部分對資料庫框架sqlalchemy的概覽,更高階的功能會在後面慢慢接觸。

oracle 10g 資料庫遷移

它是最常用最簡單的方法,一般是基於應用的owner級做匯出匯入。操作方法為 在新庫建立好owner和表空間,停老庫的應用,在老庫執行 exp user pwd owner file exp dmp log exp log buffer 6000000,匯入dmp檔案到新庫,在新庫執行如下命令 imp...

flask資料庫操作常用包 資料庫遷移

flask sql config.py manager.py models base.py article序號 包名作用 1cymysql pip intsall cymysql 資料庫驅動 2flask sqlalchemy pip install flask sqlalchemy 資料庫連線 3...

資料庫遷移

這期專案,需要將另外乙個系統a與現有系統b整合,由於時間比較緊,直接採用遷移oracle資料庫物件的方式,發現之前評估的方案不是特別完善,首先 1 a資料庫為gbk編碼,b資料庫是utf 8編碼格式,a資料遷移需要進行中文字段擴容 至少1.5倍 2 a資料庫需要做效能評估,歷史資料遷移涉的方式,兼顧...