迁移到GAE

时间:2009-09-28 23:39:58

标签: python django google-app-engine google-cloud-datastore

将MySQL表格迁移到Google Datastore并为其创建python模型的最佳方法是什么?

我有一个PHP + MySQL项目,我想迁移到Python + GAE项目。到目前为止,最大的障碍是迁移表格并创建相应的模型。每张桌子大约110列。手动为表创建模型有点单调乏味,更不用说创建加载器并导入生成的csv表表示。

我是否有更有效的方式进行迁移?

5 个答案:

答案 0 :(得分: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)

一旦定义了架构,就可以直接从数据库批量加载 - 无需中间CSV文件。有关该主题,请参阅my blog post

答案 1 :(得分:2)

approcket可以从谷歌中获取mysql⇌gae或gae builtin remote api

答案 2 :(得分:1)

在你的内容中,我会编写一个一次性的Python脚本来读取现有的MySQL模式(使用MySQLdb),生成要匹配的models.py(然后对生成的内容进行一些手动检查和编辑代码,以防万一)。假设每个实体具有“约110”属性的数据模型是您满意并希望保留的东西,当然;可能值得借此机会稍微分解一下(如果你当前的方法还依赖于GAE没有给你的连接或其他SQL功能,你可能不得不这样做),但这当然需要更多的手工工作。 / p>

数据模型到位后,bulk loading可能会发生,通常是通过中间CSV文件(有几种方法可以生成这些文件)。

答案 3 :(得分:1)

你可以migrate them to django models first

特别使用

python manage.py inspectdb > models.py

编辑models.py直到满意为止。您可能必须放入ForeignKeys,调整CharFields的长度等。

我已经将几个遗留数据库转换为django,并取得了很好的成功。

然而,Django模型与GAE模型(我不是很熟悉)不同,所以我不知道这可能不是非常有用!

答案 4 :(得分:1)

你不需要

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

:)