python - 使用 Python 的 Google App Engine 上的 key 或 ID

标签 python google-app-engine

嗨,我之前问过一个关于使用 key 的问题,得到了完美的回答。

但是,现在我想知道是否可以为我的模型创建和使用 key ,我的 iPhone 应用程序人员告诉我我们需要 INT 来存储在数据库中。我的 Python 代码与 Keys 一起工作,现在可能不得不回溯。

我很想听听您对创建 key 名称与自动生成 ID 的整体意见,我的 iPhone 应用无需任何大的更改即可使用。

这是我的模型:

class User(db.Model):
   id = db.StringProperty()
   name = db.StringProperty()
   image = db.BlobProperty(default=None)

class Book(db.Model):
   image = db.BlobProperty()
   date_added = db.DateTimeProperty(auto_now_add=True)
   is_active = db.BooleanProperty(default=True)

class BookUser(db.Model):
   book = db.ReferenceProperty(Book)
   user = db.ReferenceProperty(User)
   is_active = db.BooleanProperty(default=True)

以及我如何使用 Keys 处理它们(如下)。 每次用户登录时,如果 BookUser 记录不存在,就会创建它。我需要将所有这些数据发送到 iPhone,并将 ID 存储在数据库中。下面看起来很可靠,谁认为我应该告诉 iPhone 开发人员“接受它”:)

或者下面的问题可以用更好的方式解决吗?

### Get the Users Details
user_id = 1
user = User.get_by_key_name(user_id)
user_key = user.key().name()

### Get the latest active Book
book = Book.all().filter('is_active =', True).get()
book_key = book.key().name()

### Get latest Book for this User
bookuser_key_name = "%s:%s" % (str(book_key), str(user_key))
bookuser = BookUser.get_or_insert(bookuser_key_name)
bookuser.card = card
bookuser.user = user
bookuser.put()

最佳答案

您可能希望避免仅使用“id”作为字段名称。编码时可能会与数据键的 id() 混淆。 http://code.google.com/appengine/docs/python/datastore/keyclass.html

user_id 是不错的选择。

您的“iPhone 用户”想要使用整数非常令人担忧。您真的不想依赖或使用 id 的顺序 int 值。除了在集群环境中难以获得正确性之外,它还会引入安全问题,使 ID 变得容易被猜到。

关于python - 使用 Python 的 Google App Engine 上的 key 或 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4823256/

相关文章:

python - 自动上传训练数据标签 csv 和训练处理 AutoML Vision 图像分类中的模型

google-app-engine - GAE 上的 JDO - @Unowned 字段返回为 null

java - 在 App Engine 上为 servlet 创建类似 REST 的 url 映射

java - 使用 Java 将 Google 日历数据(通过 API v3)导入 Google App Engine

python - 将多个张量成对相乘 keras

python facebook 墙帖 (#200)

python - 无法从docker-compose生成django.po文件

javascript - Chart.js 未更新 Flask python 或接收来自 Flask 的数据

javascript - 从html表单中的下拉框中获取选定的值而不提交

google-app-engine - 将音频文件从WP7发布到App Engine服务器(Java)