2016-09-13 2 views
0

Я очень новый. Весь мой опыт находится на стороне БД, поэтому я теряюсь на стороне Python. Тем не менее я пытаюсь создать класс, который я могу использовать для выполнения хранимых процедур. Я использую Python 3.4.3. Я нашел класс mysql в github и упростил/модифицировал его, чтобы сделать 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 

Глядя на мой INIT, это займет 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) 
Смежные вопросы