2016-09-13 103 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)