Нужен класс для связи с БД через psycopg2

Написал класс, при сохранении выдаётся INSERT 0 1, как положено, но данные не сохраняются.

class ConnectDB:

def __init__(self):
    self.info_db = {"dbname": "my_data_base", 
                    "host":"localhost"}
    self.conn = psycopg2.connect(** self.info_db)
    self.cursor = self.conn.cursor()

def close(self):
    self.conn.close()
    self.cursor.close()

class Use:
    def __init__(self):
        self.cursor = ConnectDB().cursor

    def save_board_in_db(self):
        request = f"""INSERT INTO Users (user_name)
                    VALUES ('Bob')"""
        self.cursor.execute(request)
        print(self.cursor.statusmessage)


save = Use()
a.save_board_in_db() 

Подскажите, как можно переделать что бы сохранялось. (self.cursor.execute(request) даёт None)


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

Автор решения: Viktor Ovsienko

Нашел ответ в английском стеке, вот ссылки:

https://stackoverflow.com/questions/36464592/psycopg2-cursor-execute-is-not-working-properly https://stackoverflow.com/q/13715743/9374673

Мой класс в итоге получился таким:

class ConnectDB:

    def __init__(self):
        self.info_db = {"dbname": "my_data_base", 
                        "host":"localhost"}
        self.conn = psycopg2.connect(** self.info_db)
        self.cursor = self.conn.cursor()

    def query(self, request):
        self.cur.execute(request)
        self.conn.commit()

    def toyal(self):
        return self.cur.fetchall()

    def status(self):
        return self.cur.statusmessage

    def close(self):
        self.cur.close()
        self.conn.close()

Класс для использования:

class Use:
    def __init__(self):
        self.cursor = ConnectDB()
    def save_board_in_db(self):
        request = f"""INSERT INTO Users (user_name)
                      VALUES ('Bob')"""
        self.cursor.query(request)
        return self.cursor.status()

    def __del__(self):
        self.cursor.close()

Для записи в БД:

data = Use()
data.save_board_in_db()
status = data.status()
→ Ссылка