Соединение с базой данных

Делаю бота с сохранением данных в базу. Но после одного запроса, как я понимаю, соединение закрывается. Реализовываю это всё через классы:

class db:
    def __init__(self, host, user, password, database):
        self.con = pymysql.connect(
            host=host, 
            user=user, 
            password=password, 
            database=database, 
            charset='utf8mb4',
        )
    
    def version(self):
        cur = self.con.cursor()
        cur.execute("SELECT VERSION()")
    
        version = cur.fetchone()
        
        return version[0]

    def checkUser(self, vid):
        cur = self.con.cursor()
        cur.execute(f"SELECT {vid} FROM users")

        return cur.fetchone()

    def createUser(self, vid, name, photo, age, sex, description, city, blocked):
        cur = self.con.cursor()
        insert_stmt = "INSERT INTO users(id, name, photo, age, sex, description, city, blocked) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)"

        data = (vid, name, photo, age, sex, description, city, blocked)
        return cur.execute(insert_stmt, data), self.con.commit()

    def setName(self, vid, name):
        cur = self.con.cursor()
        update_stmt = "UPDATE users SET name = %s WHERE id = %s"

        data = (name, vid)
        return cur.execute(update_stmt, data), self.con.commit()

    def setAge(self, vid, age):
        cur = self.con.cursor()
        update_stmt = "UPDATE users SET age = %s WHERE id = %s"

        data = (age, vid)
        return cur.execute(update_stmt, data), self.con.commit()
    
    def setSex(self, vid, sex):
        cur = self.con.cursor()
        update_stmt = "UPDATE users SET sex = %s WHERE id = %s"

        data = (sex, vid)
        return cur.execute(update_stmt, data), self.con.commit()

    def setDesc(self, vid, desc):
        cur = self.con.cursor()
        update_stmt = "UPDATE users SET description = %s WHERE id = %s"

        data = (desc, vid)
        return cur.execute(update_stmt, data), self.con.commit()

    def setCity(self, vid, city):
        cur = self.con.cursor()
        update_stmt = "UPDATE users SET city = %s WHERE id = %s"

        data = (city, vid)
        return cur.execute(update_stmt, data), self.con.commit()
    
    def getProfile(self, vid):
        cur = self.con.cursor()
        cur.execute(f"SELECT * FROM users WHERE id = {vid}")

        return cur.fetchone()

    def close(self):
        return self.con.close()

Как сделать возможным поддерживания соединения с базой данных открытым?


Ответы (0 шт):