2

MySQLテーブルをGoogleDatastoreに移行し、それらのPythonモデルを作成するための最良の方法は何ですか?

Python+GAEプロジェクトに移行したいPHP+MySQLプロジェクトがあります。これまでのところ、大きな障害はテーブルの移行と対応するモデルの作成です。各テーブルの幅は約110列です。テーブルのモデルを手動で作成するのは少し面倒です。ローダーを作成して、生成されたcsvテーブル表現をインポートすることは言うまでもありません。

移行を行うためのより効率的な方法はありますか?

4

5 に答える 5

4

一般に、モデルを自動的に生成することはそれほど難しくありません。(フィールド名、データ型)で構成される行を含む各テーブルのcsvファイルがあるとすると、次のようなものが機能します。

# Maps MySQL types to Datastore property classes
type_map = {
    'char': 'StringProperty',
    'text': 'TextProperty',
    'int': 'IntegerProperty',
    # ...
}

def generate_model_class(classname, definition_file):
  ret = []
  ret.append("class %s(db.Model):" % (classname,))
  for fieldname, type in csv.reader(open(definition_file)):
    ret.append("  %s = db.%s()" % (fieldname, type_map[type]))
  return "\n".join(ret)

スキーマを定義すると、DBから直接一括ロードできます。中間のCSVファイルは必要ありません。この件に関する私のブログ投稿を参照してください。

于 2009-09-29T10:57:15.963 に答える
2

approcketは、mysql⇌gaeまたはgae組み込みのリモートAPIをGoogleから取得できます

于 2009-09-29T11:04:17.853 に答える
1

あなたの立場で、既存のMySQLスキーマ( MySQLdbを使用)を読み取るワンショットPythonスクリプトを記述し、一致するmodels.pyを生成します(念のため、生成されたコードを手動でチェックして編集します)。もちろん、エンティティごとに「約110」のプロパティを持つデータモデルは、満足して保存したいものであると想定しています。少し分割する機会を利用する価値があるかもしれませんが(実際、現在のアプローチが結合やGAEが提供しない他のSQL機能にも依存している場合は、そうしなければならない場合があります)、もちろんそれはより多くの手動作業を必要とします。

データモデルが配置されると、通常は中間のCSVファイルを介して一括読み込みが発生する可能性があります(これらを生成する方法はいくつかあります)。

于 2009-09-29T00:11:18.423 に答える
1

最初にそれらをdjangoモデルに移行できます

特に使用

python manage.py inspectdb > models.py

そして、満足するまでmodels.pyを編集します。ForeignKeysを入れたり、CharFieldsの長さを調整したりする必要があるかもしれません。

私はいくつかのレガシーデータベースをこのようなdjangoに変換し、成功を収めました。

ただし、DjangoモデルはGAEモデル(私はあまりよく知らない)とは異なるため、あまり役に立たない可能性があります。

于 2009-09-29T12:03:24.450 に答える
1

あなたはする必要はありません

http://code.google.com/apis/sql/

:)

于 2011-11-01T18:47:28.687 に答える