Google 云数据存储模拟器初始化数据

Google cloud datastore emulator init data

我想为本地项目使用 google 云数据存储模拟器。我已经安装了模拟器 运行 :

gcloud beta emulators datastore start

我的应用程序连接到它,但问题是我不知道如何用实体填充它,因为没有用户界面并且我的应用程序需要一些管理员用户在场。

我还尝试使用以下命令导出生产数据库(数据存储):

 gcloud datastore export

但没能成功。

我应该编写一个独立的 js/python 脚本来以编程方式填充数据库吗?

请指教

模拟器创建一个在您的本地计算机上运行的 "Datastore",它基本上模拟行为,就好像它是 Google 云数据存储本身一样。

因此,如果您已经 运行 连接模拟器并且您的应用连接到它,只需使用连接到 Datastore 的任何脚本,您就可以执行任何 read/write 操作。例如,如果您使用 python-datastore github repo:

代码会在每个 "user's ip" 和 "timestamp" 访问您的应用时插入实体,然后查询最后 10 次访问:

entity = datastore.Entity(key=ds.key('visit'))
entity.update({
    'user_ip': user_ip,
    'timestamp': datetime.datetime.utcnow()
})

ds.put(entity)

query = ds.query(kind='visit', order=('-timestamp',))

results = [
    'Time: {timestamp} Addr: {user_ip}'.format(**x)
    for x in query.fetch(limit=10)]

output = 'Last 10 visits:\n{}'.format('\n'.join(results))

因此,如果您 运行 使用模拟器安装您的应用程序,这些所有实体都将插入本地并从那里查询。如果您停止模拟器然后再次 运行 它,您将看到如下内容:

Reusing existing data in [/tmp/tmp.(whatever)/emulators/datastore]

因此您将能够继续使用相同的数据,除非您删除它或更改模拟器的数据目录changing the --data-dir flag

如果您运行以下命令:

gcloud datastore export

First of all you are missing the OUTPUT_URL_PREFIX; where your datastore will be exported. And second, this command doesn't have the functionality to work with local datastore yet:You can see the following public issue tracker 已被请求。

如您在 the answer and edit by @Olivier.Roger and @stanzheng in the following thread 中所见,有一种方法可以将生产数据存储导出到本地数据存储。您必须遵循以下步骤:

1.Deploy一些应用运行宁宁使用remote_api. For example this repo是一种直接的方法。

2.Run 此命令用于将生产中的数据存储下载到文件 data.csv:

appcfg.py download_data -A YOUR_APP_NAME --url=http://YOUR_APP_NAME.appspot.com/_ah/remote_api/ --filename=data.csv

3.Start 数据存储模拟器:

gcloud beta emulators datastore start

4.Runthe Local Development Server with the same remote_api repo than before。当你 运行 这个你会看到类似的东西:

Starting API server at: http://0.0.0.0:39693

在接下来的步骤中使用最后一个端口 (39693)

5.Run以下命令:

appcfg.py --url=http://localhost:39693/_ah/remote_api/ --filename=data.csv upload_data

在最后一步中,您实际执行的操作如下:您正在将 data.csv 上传到本地的应用程序 运行ning。考虑到您还在 运行ning 数据存储模拟器,您在本地的应用程序 运行ning 已连接到它,因此您正在将 data.csv 上传到本地数据存储。