【问题标题】:get first value in Pymodm在 Pymodm 中获取第一个值
【发布时间】:2018-10-02 19:17:23
【问题描述】:

我想使用 pymodm 检查在用户注册期间提供的用户名是否已经存在,并使用类似于使用 pymongo 的明确解决方案:

if users.find_one({"username": username}) is not None:
     print("This username already exists")

要编写此代码,我必须编写:

try :
    user = User.objects.get({'username': username})
except errors.DoesNotExist:
    user = None
if user is not None:
    print("This username already exists")

因为 pymodm 使用期望。编码效率非常低且繁重。你有什么想法吗?

【问题讨论】:

  • 测试.count() > 0怎么样?
  • count() 将计算返回的get() 请求中的条目数。但是,当没有数据可用时,get 请求已经引发了异常。
  • count() 没有使用用户名的索引(应该是索引属性才能使用索引 db joy),因此您需要评估有多少用户总共(不是最佳的),而不是仅仅使用索引字段找到一个。这可以使您的登录操作成为喝咖啡的天堂。

标签: python pymongo pymodm


【解决方案1】:

嗯,是的,线程不是最佳方式,但是在这种情况下,它与在数据库请求准备好时保持打开侦听器等待回调的效果略有相同。

您的代码是多余的,因为异常已经检查了您的 if 语句。这样做:

try :
     user = User.objects.get({'username': username})
     print("This username already exists")
except errors.DoesNotExist:
     # You can create the user     
     print("This username can be used")

还可以考虑在用户名字段中创建一个index,或者,使用索引字段执行用户查找操作您可能已经拥有,这将使您的应用程序在性能方面更好.

【讨论】:

    猜你喜欢
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    • 2019-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多