私のdjangoアプリケーション(webapp)のmodels.pyファイルが次のようなものであると仮定します:
from django.db import models
from django.db import connection
class Foo(models.Model):
name = models.CharField(...)
surname = models.CharField(...)
def dictfetchall(cursor):
"Returns all rows from a cursor as a dict"
desc = cursor.description
return [
dict(zip([col[0] for col in desc], row))
for row in cursor.fetchall()
]
def get_foo():
cursor = connection.cursor()
cursor.execute('SELECT * FROM foo_table')
rows = dictfetchall(cursor)
return rows
データベースのコンテンツにアクセスするには、基本的に次の 2 つのオプションがあります。
オプション1 :
from webapp.models import Foo
bar = Foo.objects.raw('SELECT * FROM foo_table')
オプション 2 :
from application.models import get_foo
bar = get_foo()
実行が最も速いオプションはどれですか? 私がやりたいことをするためのより良い方法はありますか?