我正在学习在谷歌应用引擎上开发网络应用,我遇到了麻烦。 我的应用程序中有一些默认用户,我编写了一个函数createDefaultUsers来创建一个User表,使用我的python文件中的信息列表。我希望只创建一次这个User表,每次我使用我的应用程序时,数据就在那里。但是你知道,createDefaultUsers函数在我的python文件中,所以,在我使用我的应用程序时,我只是一次又一次地创建这个User表。 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()
我的本地测试很好。但是当我部署它时,它不起作用(似乎没有用户创建)。我哪里错了?
答案 0 :(得分:1)
您可以轻松修改该功能以检查是否有现有用户,如果有,请不要创建它们:
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
command line arugments