Django:objects.raw()得到查询结果,但没有记录

fumotvh3  于 2022-12-14  发布在  Go
关注(0)|答案(1)|浏览(208)

我是django新手,我有一个基本问题和一个技术问题。
1.我正在使用Postgres DB。我使用psycopg 2连接/游标来获取数据,在建立连接时有一些延迟。我读到,ORM负责低级别的活动,如建立连接等。如果我使用django,ORM将负责连接挑战?1.1.我可以期待与raw()相同的(低级别活动)吗?

  1. objects.raw(sql)返回查询而不是表中的记录。
    我对学生模型的定义如下
class Student(models.Model):
    firstname = models.CharField(max_length=100)
    surname = models.CharField(max_length=100)

    def __str__(self):
        return self.firstname

创建视图时,
默认学生列表(请求):

#posts = Student.objects.all()  --> 1. working as expected (fetching all records firstname)

cursor = connection.cursor()
sql = "select * from api_student"
cursor.execute(sql)
posts = cursor.fetchone()      --> 2. returning entire record

#posts = Student.objects.raw(sql) --> 3. RETURNING SQL QUERY NOT RECORD FROM TABLE ???

print(posts)
return render(request, 'output.html', {'posts':posts})

输出:
1.〈查询集[〈学生:首页〉〉〉
1.〈原始查询集:从API_student〉--〉中选择*这是一项挑战,我是否错过了任何
1.(“阿尼尔”,“库马尔”)

2exbekwf

2exbekwf1#

**raw()**方法接受一个原始sql查询,执行它,并返回一个RawQuerySet示例。你可以像普通QuerySet一样迭代RawQuerySet并获取对象。

sql = "select * from api_student"

student_qs = Student.objects.raw(sql)

for obj in student_qs:
    print(obj.pk, obj.firstname, obj.surname)

相关问题