gpt4 book ai didi

python - 无法使用 web2py 的 DAL 写入 AppEngine DataStore

转载 作者:太空宇宙 更新时间:2023-11-03 19:27:03 25 4
gpt4 key购买 nike

我刚刚开始将 web2py 与 Google AppEngine 一起用于我的应用程序。由于某种原因,我无法使用 DAL 保存/检索数据。这是我正在使用的代码:

在 db.py 末尾:

from aeoid import middleware
from aeoid import users
import json


db.define_table('files',
db.Field('name', 'text'),
db.Field('path', 'text'),
db.Field('version', 'text', default="live"),
db.Field('hash', 'text'),
db.Field('data', 'text'),
db.Field('meta', 'text', default=json.dumps({'date':str(request.now)})),
db.Field('contributors', 'text', default=json.dumps([users.get_current_user()])),
db.Field('lasttime', 'datetime', default=request.now)
)

在我的 Controller 中:

name = "TEST"
db.files[0] = dict(hash=name, name=name, path=name)
textobj = db.files[1]
if textobj is None:
print "Fail: 500 Internal Server Error"

这里,由于某种原因,textobj 始终为 None。

我做错了什么?

编辑:我在 Windows 上使用 AppEngine SDK for Python。

最佳答案

使用 shortcut syntaxdb.table[id]id指记录ID。 db.table[0] 实际上并不引用现有记录——它只是用于插入新记录。另外,在 GAE 上,记录 ID 不会从 1 开始并以 1 递增,因此您的第一个插入记录不会具有 ID=1。您可以执行以下任一操作:

textobj = db(db.files).select().first()

textobj_id = db.files.insert(hash=name, name=name, path=name)
textobj = db.files[textobj_id]

最后,在部署到 GAE 之前,请确保您已使用 GAE SDK 应用程序服务器在本地运行该应用程序,以便正确生成 index.yaml 文件,如所述 here .

关于python - 无法使用 web2py 的 DAL 写入 AppEngine DataStore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7767808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com