迁移到GAE
将MySQL表迁移到Google Datastore并为它们创建Python模型的最佳方法是什么?
我有一个用PHP和MySQL做的项目,现在想把它迁移到Python和GAE(Google App Engine)上。目前最大的难题就是迁移表格和创建相应的模型。每个表大约有110列,手动为这些表创建模型有点麻烦,更不用说还要创建一个加载器来导入生成的CSV表格了。
有没有更高效的方法来完成这个迁移呢?
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)
一旦你定义好了你的数据结构,就可以直接从数据库批量加载数据了,不需要中间的csv文件。你可以查看我关于这个主题的博客文章。
2
approcket 是一个可以让 MySQL 数据库和 Google App Engine(简称 GAE)之间互相连接的工具,或者也可以通过 Google 提供的内置远程 API 来进行连接。