2017-09-22 5 views
0

Djangoを使用してMySQLデータベースを照会しようとしています。私はいくつかの情報源を使ってこのコードをまとめました。私はどのようにクエリを渡している間違っている説明することができますか?私はPythonとDjangoを初めて使うので、私のコードを改善する方法についての提案やリンクもありがたいです。私が手にエラーがある:Django MySQLデータベースエラーデータベース照会を渡す

TypeError: query() takes exactly 1 argument (2 given) 

私のクラス:(データベース接続と表示され、ビューにつながるん)

from helloservice.models import Snippet 
from helloservice.serializers import SnippetSerializer 
from rest_framework import generics 
from django.contrib.auth.models import User 
from helloservice.serializers import UserSerializer 
from rest_framework import permissions 
from helloservice.permissions import IsOwnerOrReadOnly 
from rest_framework.decorators import api_view 
from rest_framework.response import Response 
from rest_framework.reverse import reverse 
from rest_framework import renderers 
from rest_framework.response import Response 
from rest_framework import viewsets 
from rest_framework.decorators import detail_route 

#sudo pip install MySQL-python 
class DbConn(): 
    hostname = 'jdbc:mysql://xxxxxx.us-east-1.rds.amazonaws.com:3306' 
    username = 'rrrr' 
    password = 'xxxx' 
    database = 'yyyy' 

    def query(q): 
     myConnection = MySQLdb.connect(host=hostname, user=username, passwd=password, db=database) 
     cur=conn.cursor() 
     cur.execute(q) 
     return cur 

class UserViewSet(viewsets.ReadOnlyModelViewSet): 
    conn= DbConn() 
    cur=conn.query('SELECT * FROM pulse.customer WHERE userId = 103') 
    #return cur.objects.values_list('loginName') 
    print(cur.objects.values_list('loginName')) 
+1

これを行わないでください。あなたはDjangoを使っています。少なくとも、組み込みの接続オブジェクトを使用してSQLを実行しますが、モデル層を使用するほうがずっと良く、SQLをまったく使用しないでください。 –

+0

Im new to django、組み込みの接続オブジェクトはどういう意味ですか?あなたは、例を提供するか、私に何をgoogleのアイデアを与えることができますか? – Rilcon42

+0

Djangoのモデルとクエリの使い方は、[チュートリアル](https://docs.djangoproject.com/en/1.11/intro/tutorial02/)やその他のドキュメントにあります。ランダムなソースから「一緒につなぎ合わせる」というよりも、それを読み、それに従うべきです。 –

答えて

1

あなたのインスタンスメソッドは、常にこのような最初のパラメータとして、自己に取る必要があります。

def query(self, q): 
    myConnection = MySQLdb.connect(host=hostname, user=username, passwd=password, db=database) 
    ... 

selfは、作成したクラスのインスタンスを指します。

関連する問題