0

我有这个模型

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 中访问这些值?例如,如果我知道类型,我如何获得值(反之亦然)?我不确定语法是如何工作的。

4

3 回答 3

0

你应该能够得到它

Type.objects.filter(type=typeImInterestedIn)

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

于 2012-09-27T14:01:00.517 回答
0

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

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

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

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

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

于 2012-09-27T14:01:10.680 回答
0

如果您首先使用 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
于 2012-09-27T14:03:40.307 回答