Google app engine 每次我使用我的web应用程序时,我只是再次创建我的数据表。如何解决这个问题?
我正在学习在google app engine上开发web应用程序,遇到了一个麻烦。 我的应用程序中有一些默认用户,我编写了一个函数createDefaultUsers,使用python文件中的用户信息列表创建一个用户表。我希望只创建一次这个用户表,每次我使用我的应用程序时,数据就在那里。但是你知道,createDefaultUsers函数在我的python文件中,所以每次我使用我的应用程序时,我只是一次又一次地创建这个用户表。OGM~我如何解决这个问题 另一个问题: 如何清除本地数据存储?它可能会帮助我调试我的应用程序,你知道,有时我只是想重新开始 --------------更新---------------- 例如,以下是一些默认用户:Google app engine 每次我使用我的web应用程序时,我只是再次创建我的数据表。如何解决这个问题?,google-app-engine,google-cloud-datastore,Google App Engine,Google Cloud Datastore,我正在学习在google app engine上开发web应用程序,遇到了一个麻烦。 我的应用程序中有一些默认用户,我编写了一个函数createDefaultUsers,使用python文件中的用户信息列表创建一个用户表。我希望只创建一次这个用户表,每次我使用我的应用程序时,数据就在那里。但是你知道,createDefaultUsers函数在我的python文件中,所以每次我使用我的应用程序时,我只是一次又一次地创建这个用户表。OGM~我如何解决这个问题 另一个问题: 如何清除本地数据存储?它可
defaultUsers = [
('qingWANG','wang123456','wangqing@saad.com','teacher'),
('stevenYANG','123456','yifan@gmail.com','student'),
('jingZHU','zhu123456','zhujing@example.com','student'),
('conghuiHE','he123456','conghui@where.com','student'),
('lianDUAN','duan123456','duanlian@what.com','student'),
('xinHAO','hao123456','haoxin@example.com','student')]
下面是我创建用户的函数:
def createDefaultUsers():
"""
create default user table
"""
for user in defaultUsers:
users = Users(name = user[0], password = user[1],
email = user[2], role = user[3])
users.put()
在我的第一个想法中,我将createDefaultUsers放在这里:
def main():
createDefaultUsers()
run_wsgi_app(app)
if __name__ == "__main__":
main()
在我的本地测试中它是好的。但当我部署它时,它不起作用(似乎没有创建用户)。我错在哪里 您可以轻松修改该函数,以检查是否存在任何现有用户,如果存在,则不要创建这些用户:
def createDefaultUsers():
"""
create default user table
"""
user_count = Users.all().count(1)
if user_count == 0:
for user in defaultUsers:
new_user = Users(name = user[0], password = user[1],
email = user[2], role = user[3])
new_user.put()
请注意,count()
查询操作非常昂贵,因为它实际上是从数据存储中检索所有实体以对它们进行计数,因此在通常的做法中是要避免的,但是通过指定0的限制,我们可以在这种情况下使其简单而快速
通过将命令行参数
--clear datastore
传递给开发服务器,可以清空开发数据存储。这里是dev_appserver.py的所有内容,您需要显示代码以获得适当的帮助。您是否在本地SDK或生产中遇到问题。(GAE中没有表格)@aschmid00我添加了一些代码,问题可能会有一些变化。我发布的代码在本地工作,但在部署它时无法工作。从粘贴代码的方式来看,函数的内容没有正确缩进。如果它实际上是这样的,那么它将在每次导入文件时运行谢谢。但是我在我的项目中找不到dev_appserver.py,也找不到index.yaml。为什么?我在win7中。是否使用AppEngine应用程序启动器启动应用程序?是的,我使用用户启动器启动应用程序并使用pycharm作为我的IDE。它可能安装在c:\Program Files\Google\Google\u AppEngine中。或者,您可以在应用程序启动器内设置命令行选项。从编辑菜单中,选择应用程序设置。有一个标有“额外命令行标志”的框。您可以将--清除数据存储
放在其中。如果您不想清除数据存储,请不要忘记将其删除。谢谢。我找到了dev_appserver.py,但我很好奇为什么我的项目中没有index.yaml文件?它是自动生成的,不是吗?这会影响我的手下吗?