2016-03-19 6 views
0

Ich versuche auf Db-Verbindung mit Python-Code, aber Ich habe ein Problem mit Python-Db-Verbindung. hier ist mein Code und ich arbeite mit Python-Version 2.7.10.Ergebnis zurückgegeben 'NoneType' Objekt hat kein Attribut 'ausführen' während ich die Verbindung von db

import pymysql 

class SqlManager: 
    def __init__(self): 
     self.conn = None 
     self.cursor = None 
     self.host = "127.0.0.1" 
     self.port = 3306 
     self.user = "user" 
     self.passwd = "pw" 
     self.db_name = "db" 

    def connect(self): 
     self.conn = pymysql.connect(
      host=self.host, port=self.port, user=self.user, passwd=self.passwd, db=self.db_name) 
     self.cursor = self.conn.cursor(pymysql.cursors.DictCursor) 
     self.conn.autocommit(True) 
     return True 

    def description(self): 
     cur = self.cursor.execute("SELECT * FROM user") 
     for row in cur: 
      print(row) 

Eigentlich denke ich, dass ich Fehler von Nonetype Attribut bekam vielleicht die Verbindung mit Nicht in init Teil erklären, aber ich habe Verbindung in Verbindungsteil, so dachte ich, dass es funktionieren würde, aber ich war es nicht.

Bitte schlagen Sie mir vor, was ich reparieren oder besser verwenden muss.

Vielen Dank für Ihre Hilfe.

+0

Geben Sie einen Teil des Codes an, den Sie tatsächlich als Klasse bezeichnen. Und Sie haben es versäumt, die Methode 'connect' und' description' richtig einzurücken. Ist es ein Fehler oder so ist dein Code? – Muctadir

+0

Siehe die Antwort unten ... – Muctadir

Antwort

0

Im Konstruktor Sie tun,

self.cursor = None 

Und dann tun Sie dies in description Methode ohne die Eigenschaft der Initialisierung

cur = self.cursor.execute("SELECT * FROM user") 

Sie könnten es ändern möchten,

self.conn.cursor.execute("SELECT * FROM user") 

Und natürlich müssen Sie nach der Initialisierung die connect Methode aufrufen diese Klasse.

+0

Danke für die Beantwortung und es half mein Problem. – mirror15