【问题标题】:How to check if something exists in a postgresql database using django?如何使用 django 检查 postgresql 数据库中是否存在某些内容?
【发布时间】:2012-03-22 14:32:27
【问题描述】:

我想检查数据库中的行是否已包含特定输入。如果它已经存在,请阻止它再次添加,如果没有,则像往常一样添加它。

如何在不将所有内容从数据库中提取出来进行检查的情况下询问数据库是否存在?

【问题讨论】:

标签: python database django postgresql


【解决方案1】:

你可以使用

Entry.objects.filter(name='name', title='title').exists()

这将返回真/假值。当您使用 count 时,orm 会生成查询,该查询的执行时间比 exists 方法要长得多。当对象不存在时get方法会抛出异常。

request.POST 是一个字典,因此可以用它检查你使用的 db,即:

Entry.objects.filter(name=request.POST['name'], title=request.POST['title']).exists()

【讨论】:

  • 您可以将字典字符串更改为 unicode:即 unicode('string') 或 u'string'
  • 如果实例已经存在,你能帮我提供一个警报框(通过使用 javascript 或任何方式)
【解决方案2】:

您的问题的答案是“是”。但是,我认为您还应该研究查询数据库的替代方法;在您不希望存在重复的字段集上创建一个唯一键。

现在,回答您的问题。查看 Django 文档以进行查询:

https://docs.djangoproject.com/en/dev/topics/db/queries/

简而言之,如果你有一个 Thing 的数据模型,Thing.objects 就是访问查询的接口。来自文档(使用博客条目,其中有一个字符串字段“标题”作为示例):

Entry.objects.get(headline__exact="Man bites dog")

界面的全部功能是您对数据库的期望(除了完全匹配之外,还有一组丰富的数据比较)。我建议您进一步查看文档以解决您的具体问题。

【讨论】:

  • 是的,在这种情况下,Entry 是模型的类。用户提供的值通过 request.POST['cashcode'] 出来,而不仅仅是 request.POST。字典查找很重要。
猜你喜欢
  • 2021-08-11
  • 2011-10-11
  • 2012-08-22
  • 2020-12-07
  • 1970-01-01
  • 2019-08-21
  • 2018-08-15
  • 2013-01-11
  • 1970-01-01
相关资源
最近更新 更多