2017-09-22 100 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新的django,你是什麼意思的內置連接對象?你可以提供一個例子,或給我一個什麼樣的想法谷歌? – 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將指向您創建的類的實例。