Соединение с базой данных
Делаю бота с сохранением данных в базу. Но после одного запроса, как я понимаю, соединение закрывается. Реализовываю это всё через классы:
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()
Как сделать возможным поддерживания соединения с базой данных открытым?