2016-09-13 86 views
0

我很新。我所有的经验都在数据库方面,所以我迷失在Python的一面。这就是说我正在尝试创建一个可以用来执行存储过程的类。我正在使用Python 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') 

我得到这个错误

​​

看着我初始化,它需要5个ARGS,因为它应该。不知道为什么我得到这个。再次,我很新,所以这可能是一个简单的问题。

感谢您的任何帮助。

+0

__init__声明后添加:字符 – user1929959

+1

请删除所有这些双下划线前缀。他们不会做你的想法,并且将来肯定会给你带来问题。 –

回答

1

mysql.connector.connect()需要命名的参数,而不是位置参数,你就错过了名。

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