Python Forum
Thread Rating:
  • 2 Vote(s) - 2.5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Unexpected argument
#1
I'm trying to use a SQL class that I found and am having issues with getting it to work and am wondering if anyone has suggestions.  

Here is the code  (also github.com/nestordeharo/mysql-python-class):


#!/usr/bin/env python
# coding=utf-8

import MySQLdb, sys
from collections import OrderedDict

class MysqlPython(object):
    """
        Python Class for connecting  with MySQL server and accelerate development project using MySQL
        Extremely easy to learn and use, friendly construction.
    """

    __instance   = None
    __host       = None
    __user       = None
    __password   = None
    __database   = None
    __session    = None
    __connection = None

    def __new__(cls, *args, **kwargs):
        if not cls.__instance or not cls.__database:
             cls.__instance = super(MysqlPython, cls).__new__(cls, *args, **kwargs)
        return cls.__instance
    ## End def __new__

    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):
        try:
            cnx = mysql.connector.connect(self.__host, self.__user, self.__password, self.__database)
            self.__connection = cnx
            self.__session    = cnx.cursor()
        except mysql.connector.errorcode as e:
            print("Error %d: %s" % (e.args[0],e.args[1]))
    ## End def __open

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

    def select(self, table, where=None, *args, **kwargs):
        result = None
        query = 'SELECT '
        keys = args
        values = tuple(kwargs.values())
        l = len(keys) - 1

        for i, key in enumerate(keys):
            query += "`"+key+"`"
            if i < l:
                query += ","
        ## End for keys

        query += 'FROM %s' % table

        if where:
            query += " WHERE %s" % where
        ## End if where

        self.__open()
        self.__session.execute(query, values)
        number_rows = self.__session.rowcount
        number_columns = len(self.__session.description)

        if number_rows >= 1 and number_columns > 1:
            result = [item for item in self.__session.fetchall()]
        else:
            result = [item[0] for item in self.__session.fetchall()]
        self.__close()

        return result
    ## End def select

    def update(self, table, where=None, *args, **kwargs):
        query  = "UPDATE %s SET " % table
        keys   = kwargs.keys()
        values = tuple(kwargs.values()) + tuple(args)
        l = len(keys) - 1
        for i, key in enumerate(keys):
            query += "`"+key+"` = %s"
            if i < l:
                query += ","
            ## End if i less than 1
        ## End for keys
        query += " WHERE %s" % where

        self.__open()
        self.__session.execute(query, values)
        self.__connection.commit()

        # Obtain rows affected
        update_rows = self.__session.rowcount
        self.__close()

        return update_rows
    ## End function update

    def insert(self, table, *args, **kwargs):
        values = None
        query = "INSERT INTO %s " % table
        if kwargs:
            keys = kwargs.keys()
            values = tuple(kwargs.values())
            query += "(" + ",".join(["`%s`"] * len(keys)) %  tuple (keys) + ") VALUES (" + ",".join(["%s"]*len(values)) + ")"
        elif args:
            values = args
            query += " VALUES(" + ",".join(["%s"]*len(values)) + ")"

        self.__open()
        self.__session.execute(query, values)
        self.__connection.commit()
        self.__close()
        return self.__session.lastrowid
    ## End def insert

    def delete(self, table, where=None, *args):
        query = "DELETE FROM %s" % table
        if where:
            query += ' WHERE %s' % where

        values = tuple(args)

        self.__open()
        self.__session.execute(query, values)
        self.__connection.commit()

        # Obtain rows affected
        delete_rows = self.__session.rowcount
        self.__close()

        return delete_rows
    ## End def delete

    def select_advanced(self, sql, *args):
        od = OrderedDict(args)
        query  = sql
        values = tuple(od.values())
        self.__open()
        self.__session.execute(query, values)
        number_rows = self.__session.rowcount
        number_columns = len(self.__session.description)

        if number_rows >= 1 and number_columns > 1:
            result = [item for item in self.__session.fetchall()]
        else:
            result = [item[0] for item in self.__session.fetchall()]

        self.__close()
        return result
    ## End def select_advanced
## End class
The line that I'm currently having issues with is 

cls.__instance = super(MysqlPython, cls).__new__(cls, *args, **kwargs)
The error that I get is that **kwargs is an unexpected argument.  I think I know what the error means, but I don't know why I'm getting it or how to fix it.  

Thanks.
Reply


Messages In This Thread
Unexpected argument - by jstockton - Feb-20-2017, 05:53 PM
RE: Unexpected argument - by Larz60+ - Feb-20-2017, 06:20 PM
RE: Unexpected argument - by jstockton - Feb-20-2017, 06:24 PM
RE: Unexpected argument - by Larz60+ - Feb-20-2017, 06:26 PM
RE: Unexpected argument - by jstockton - Feb-20-2017, 06:37 PM
RE: Unexpected argument - by snippsat - Feb-20-2017, 06:44 PM
RE: Unexpected argument - by jstockton - Feb-20-2017, 06:52 PM
RE: Unexpected argument - by Larz60+ - Feb-20-2017, 06:49 PM
RE: Unexpected argument - by jstockton - Feb-21-2017, 01:27 AM
RE: Unexpected argument - by Larz60+ - Feb-20-2017, 08:28 PM
RE: Unexpected argument - by Larz60+ - Feb-21-2017, 02:30 AM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Django "Unexpected Keyword Argument 'min_value'" AstralWeeks 0 240 Mar-27-2024, 04:56 AM
Last Post: AstralWeeks
  TypeError: __init__() got an unexpected keyword argument 'value' Anldra12 7 22,708 May-11-2021, 06:35 PM
Last Post: deanhystad
  TypeError: coerce_kw_type() got an unexpected keyword argument 'dest' juniii 1 2,440 Apr-24-2020, 01:53 PM
Last Post: Jeff900
  SyntaxError: positional argument follows keyword argument syd_jat 3 5,858 Mar-03-2020, 08:34 AM
Last Post: buran
  __call__() got an unexpected keyword argument 'text' saba_keon 5 9,386 Apr-07-2018, 11:11 PM
Last Post: nilamo

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020