【问题标题】:Values from models from Database (Django)来自数据库(Django)的模型的值
【发布时间】:2012-09-19 08:04:21
【问题描述】:

我有这个模型

class Type(models.Model):
    type = models.CharField(max_length=50)
    value = models.CharField(max_length=1)

在其中,我有一些来自 sql 文件的数据:

INSERT INTO quest_type (type, value) VALUES ('Noun', '1');
INSERT INTO quest_type (type, value) VALUES ('Adjective', '2');
INSERT INTO quest_type (type, value) VALUES ('Duration', '3');

如何在 python shell 中访问这些值?例如,如果我知道类型,我如何获得值(反之亦然)?我不确定语法是如何工作的。

【问题讨论】:

  • 我不确定您在寻找什么,但听起来您想阅读QuerySet API

标签: python sql django models


【解决方案1】:

如果你首先使用 django 的 python shell (python manage.py shell) 你必须将你的模型导入你的命名空间,所以输入 from my_app.models import Type。

现在,如果您只想从 db 语法中获取一个对象:

result = Type.objects.get(type='your_query')

如果你想获取更多,那么一个对象语法如下:

result = Type.objects.filter(type='your_query')

第二种方法返回列表而不是单个对象

使用过滤器写入后循环遍历列表:

for item in result:
    item.value #will print values from matched rows

【讨论】:

  • 假设结果输出 ', ' 使用过滤器后找到了两个。我如何访问这些是什么而不是仅仅说对象?
  • result[0], result[1] 像普通的列表项。遍历列表写入:for item in results:# do sth
【解决方案2】:

从您的问题中不清楚您对数据库了解多少,所以如果这个答案对您来说太基本,我深表歉意(如果是这样,请编辑您的问题以包含有关您正在使用的实际数据库引擎的信息并显示一些示例代码试图从数据库中读取)。

您拥有的 SQL 文件与 SQL 数据库不同。它是一系列将在 SQL 数据库中创建记录的命令。首先,您必须在您的机器上安装和配置数据库引擎,然后“运行”该 .sql 文件,以便在数据库中创建记录。

在您拥有一个实际的数据库之后,您必须配置 Django,以便它知道您正在使用哪种 SQL 引擎以及数据库的名称和位置。

最后,一旦创建了数据库并将 Django 配置为与引擎对话,您将编写 Python 代码来实例化 Type 类的实例,从数据库中读取记录并检查值。

另外,让我指出,Type 对于任何编程语言中的类来说都是一个非常非常糟糕的名称,typevalue 对于 SQL 数据库中的列来说都是一个糟糕的名称。

【讨论】:

  • 我想我明白这一切。更多的是关于语法。上面的其他一些答案应该会有所帮助。
【解决方案3】:

你应该可以用

Type.objects.filter(type=typeImInterestedIn)

需要注意以下几点: - 您可能希望避免手动写入您正在使用 ORM 的数据库。它只会造成不匹配的可能性。 - 命名对象类型几乎没有问题,因为它非常接近 Python 原生函数类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 2013-05-28
    相关资源
    最近更新 更多