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 上传到本地数据存储。
我想为本地项目使用 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 上传到本地数据存储。