Нужен класс для связи с БД через 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()