最近、SQLiteバックエンドを備えたApacheサーバーでホストされているweb2pyベースのCRMアプリをMySQLに変換する必要がありました。以下は私のために働いたステップです。フォローしたい場合に使用するサンプルアプリケーションを作成しました。ここからすべてのファイルをダウンロードできます。
注意:Unix環境でweb2pyバージョン2.4.7を使用しています。開始する前に、システムにSQLiteがインストールされていることを確認してください。これはpip、
pip install sqlite
でインストールできます 、またはhttp://sqlite.org/download.htmlでバイナリファイルを取得できます。 MySQLもインストールする必要があります。サポートが必要な場合は、こちらのチュートリアルに従ってください。
現在のデータベースには、すべてのデフォルトのweb2pyテーブルとユーザーがあります フィールドがidのテーブル 、 start_date 、および end_date :
db.define_table(
'users',
Field('start_date','string'),
Field('end_date','string')
)
このコードは、web2pyDAL構文に従います。テーブルには30,000行のデータがあります。
データクレンジング
アプリケーションの最新のSQLiteデータベースをダウンロードします。デフォルトでは、 storage.sqliteという名前のファイルです。 「/web2py/ Applications /
$ sqlite3 storage.sqlite .dump > output_before.sql
テキストエディタを使用して、 output_before.sqlを編集します ファイル:
-
PRAGMA
で始まるすべての行を削除します 、BEGIN TRANSACTION
、CREATE TABLE
およびCOMMIT
。 -
sqlite_sequence
に関連するすべての行を削除します テーブル(つまり、DELETE FROM sqlite_sequence;
。 - すべての
INSERT INTO "<table_name>" VALUES(...)
ステートメント、二重引用符を置き換えます(" "
)<table_name>
の前後 バックティック付き(` `
)-例:INSERT INTO `table_name` VALUES(...)
。
最後に、ファイルを output_after.sqlとして保存します デスクトップ上。
MySQLのセットアップ
リモートサーバー上にMySQLデータベースを作成します。データベース名、ユーザー名、パスワードをメモしてください。テスト用にデータベースをローカルに設定することもできます。これは、このチュートリアルで使用します:
$ mysql.server start
$ mysql -u root -p
Enter password:
mysql> create database migration;
Query OK, 1 row affected (0.03 sec)
mysql> exit;
MySQLを使用するようにアプリケーションを構成します。 web2py管理者を起動します。 db.pyを編集します :
db = DAL('mysql://<mysql_user>:<mysql_password>@localhost/<mysql_database>')
ファイルを保存します。
web2pyがMySQLデータベースを初期化できるようにします:
-
/web2py/applications/<your_application>/databases/
の内容をバックアップします フォルダ。次に、フォルダの内容を削除します。 - web2py管理者に戻ります。 「データベース管理」ボタンをクリックして、ローカルのMySQLデータベースにテーブルを作成します。
ターミナルでMySQLデータベースを起動して、空のテーブルがデータベースに追加されたことを確認します。
データを追加
output.sqlを保存した場所に移動します (デスクトップである必要があります)次に、次のコマンドを実行してMySQLにデータを追加します。
$ mysql -u root migration < output_after.sql
完全に実行するには数分かかります。
web2py管理者内で、データベースとアプリケーションをチェックして、新しいデータにアクセスできることを確認します。