2016-09-13 2 views
0

새로운 기능입니다. 내 모든 경험은 DB 측에 있으므로 파이썬 측면에서 길을 잃었다. 그것은 저장 프로 시저를 실행하는 데 사용할 수있는 클래스를 만들려고한다고 말했습니다. 나는 파이썬 3.4.3을 사용하고있다. github에서 mysql 클래스를 발견하고이를 단순화/수정하여 proc 호출을 작성했지만 작동하지 않습니다.저장 프로 시저를 호출하는 Python Mysql 클래스

mysqlquery.py 
import mysql.connector, sys 
from collections import OrderedDict 

class MysqlPython(object): 

    __host  = None 
    __user  = None 
    __password = None 
    __database = None 
    __procname = None 
    __inputvals = None 



    def __init__(self, host='localhost', user='root', password='', database=''): 
     self.__host  = host 
     self.__user  = user 
     self.__password = password 
     self.__database = database 
    ## End def __init__ 

    def __open(self): 
      cnx = mysql.connector.connect(self.__host, self.__user, self.__password, self.__database) 
      self.__connection = cnx 
      self.__session = cnx.cursor() 
    ## End def __open  

    def __close(self): 
     self.__session.close() 
     self.__connection.close() 
    ## End def __close 

    def proc(self,procname,inputvals): 
     self.__open() 
     self.__session.callproc(procname, inputvals) 
    ## End for proc 

## End class 

test.py 
from mysqlquery import MysqlPython 

connect_mysql = MysqlPython() 

result = connect_mysql.proc ('insertlink','1,www.test.com') 

내가 내 초기화 보면이 오류를

TypeError: __init__() takes 1 positional argument but 5 were given 

을 얻을, 그것은 예상대로 5 개 인수를 취할. 왜 내가 이것을 얻었는지 모르겠다. 다시 말하지만, 나는 아주 새롭기 때문에 간단한 문제 일 수 있습니다.

도움 주셔서 감사합니다.

G

+0

__init__ 선언 후 추가 : 문자 – user1929959

+1

두 개의 밑줄 접두사를 모두 삭제하십시오. 그들은 당신이 생각하는 것을하지 않으며 미래에 거의 확실하게 문제를 일으킬 것입니다. –

답변

1

mysql.connector.connect()는 명명 된 인수, 위치하지 인수를, 당신은 이름을 놓치고있어.

cnx = mysql.connector.connect(host=self.__host, user=self.__user, password=self.__password, database=self.__database) 
관련 문제