Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用google appengine在django Norel中保存实体_Python_Google App Engine_Django Nonrel - Fatal编程技术网

Python 使用google appengine在django Norel中保存实体

Python 使用google appengine在django Norel中保存实体,python,google-app-engine,django-nonrel,Python,Google App Engine,Django Nonrel,更新:我注意到,当我使用视图(和创建对象函数)保存实体时,实体会被保存(并可在数据存储查看器中使用)。但是,当我使用shell(manage.py shell)创建和保存新实体时,它不会提交到存储中(但仍然可以在Tes.objects.all()中看到) 我开始在谷歌appengine上玩django Nonel,我对保存实体这样简单的事情感到沮丧 我已按照中所述设置了环境。我设法运行了示例应用程序,它运行正常。我想对其进行扩展,以便将实体保存到存储器中。为此: 我使用models.py添加了

更新:我注意到,当我使用视图(和创建对象函数)保存实体时,实体会被保存(并可在数据存储查看器中使用)。但是,当我使用shell(manage.py shell)创建和保存新实体时,它不会提交到存储中(但仍然可以在Tes.objects.all()中看到)


我开始在谷歌appengine上玩django Nonel,我对保存实体这样简单的事情感到沮丧

我已按照中所述设置了环境。我设法运行了示例应用程序,它运行正常。我想对其进行扩展,以便将实体保存到存储器中。为此:

  • 我使用models.py添加了新的django模块:

    from django.db import models
    
    class Tes(models.Model):
        name = models.CharField(max_length=150)
    
  • 我创建了一个脚本来保存一些数据:

    import os
    import sys
    sys.path.append("d:\\workspace\\project\\")
    os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
    from testmodule.models import Tes
    t = Tes(name="test")
    t.save()    
    tes = Tes.objects.all()
    for t in tes:
        print t.name
    
  • 脚本运行时没有错误。当我一次又一次地运行它几次时,它会打印越来越多的“测试”字符串。但是当我尝试在一分钟后运行它时,Tes.objects.all()将不返回任何内容。在此期间,数据存储文件会更改其大小(但这可能只是某种日志)。当我查看时,我只能从select字段中选择ADMINXRSFTOKEN

    不管怎样,我错过了什么?我可以在哪里找到某种日志来告诉我出了什么问题?

    如果您正在创建实体而不是保存它,那么它不应该是
    t.put()
    ?我使用
    put()。如果您导入django,您可能想知道django还有其他替代品,比如我选择的GAE+Jinja2+WTForms,尤其是现在google.db.djangoforms不推荐为表单选择表单框架,一个模板引擎,也许还有一个db框架,您不必导入django,这通常会迫使您导入比需要多得多的内容


    因此,我的建议是避免导入django…
    ,而是使用Jinja2+WTForms。如果你真的想在appengine上使用django,那么你可能想登录www.allbuttonpressed.com项目,该项目可以为谷歌appengine启用所有django,但请确保你需要这么多django,因为我怀疑我们需要的只是一个模板引擎和一个表单框架,我们可以不用django

    这是一个让人困惑的问题。从:

    另外,切勿将manage.py runserver与其他管理工具一起运行 同时命令。这些改变不会生效。这是一个很好的例子 App Engine SDK限制可能在以后的版本中得到修复


    因此,您不能同时执行
    manage.py runserver
    manage.py shell
    。如果这样做,对其中一个数据存储的更改将在另一个数据存储中不可见。App Engine SDK强制执行本地数据存储锁定。在启动shell之前,请确保已停止服务器

    这真的不能回答问题。“我缺少什么?”被问到,我的答案是保存和创建之间的区别。我想说的是,这可能是使用save()和put()保存和创建之间的区别,而且除了完整的django,还有很多好的替代方法。