Python中mysql.connector.connect上的('can only concatenate str(not“tuple”)to str',)

ujv3wf0j  于 12个月前  发布在  Mysql
关注(0)|答案(1)|浏览(202)

我在Python中遇到了问题。系统在函数cnx = mysql.connector.connect(host=self.host, database=self.database , user= self.username , password=self.password )上面显示("'tuple' object has no attribute 'strip'",),就好像它把逗号识别为一个连接。我花了几个小时也解不出来。

class Database:
    def __init__(
        self,
        host="localhost",
        database="bayer",
        username="root",
        password="root",
        port="3306",
    ) -> None:
        self.host = str(host)
        self.database = str(database)
        self.username = str(username)
        self.password = str(password)
        self.port =str(port)
        self.connection = None
    
    
    def connectDatabase(self):
        try:
            logging.basicConfig(level=logging.INFO)
            
            if self.connection is not None:
                logging.info("return active connection for you")
                return self.connection
                       
            self.connection =  mysql.connector.connect(host=self.host, database=self.database , user=self.username , password=self.password )
            
            
            logging.info("CON02")
            
            if self.connection.is_connected():
                logging.info("You're connected to database: " + self.database)
                return self.connection
            else:
                logging.error(
                    "Error in connected to database: " +
                    self.database)
            logging.info("CON03")
        except Error as e:
            logging.info("Database Error: " + e.args)
            #raise (e)

    def query(self, connection, sql, *args):
        cursor = connection.cursor()
        try:
            cursor.execute(sql, args)
            return cursor
        except Error as e:
            logging.error("Database Error: " + e.args)
            raise (e)

我只需要通过这条连线。

mfuanj7w

mfuanj7w1#

e.args是一个元组,即

>>> type(ValueError().args)
<class 'tuple'>

因此,当尝试将字符串与元组连接时,即logging.info("Database Error: " + e.args),它会崩溃:

>>> "" + ()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "tuple") to str

你可以在e.args上连接它们,而不会引发错误:

logging.info("Database Error: " + "".join(e.args))

或者,最好使用f字符串

logging.info(f"Database Error: {e.args}")

相关问题