PyQt5+Python+PostgreSQL | Перенести данные из одной таблицы в другую с помощью кнопки.

loneres

Новичок
Пользователь
Ноя 21, 2021
7
0
1
Здравствуйте, не могу решить проблему.
Я создал кнопку и 2 таблицы данные внутри показываются через базу данных PostgreSQL.
Мне нужно чтобы при выборе ячейки таблицы и после нажатия на кнопку, не одна ячейка которая была выбрана а вся строка выбранной ячейки, перенеслась в другую таблицу базы данных. Именно чтоб выбранная мышкой в таблице товар при нажатии на кнопку переносился в другую таблицу
Как можно это сделать? Я делаю но почему то могу перенести только одну ячейку которую выбрал,а нужно всю строку этой ячейки.
Снизу код таблицы и функции которой я пытался перенести данные а так же на скриншотах база данных

Вот код показывающий таблицу 1:
Python:
import psycopg2

class Main_Metall(QWidget, Ui_main_window_ui):
    def __init__(self):
        super(Main_Metall, self).__init__()
        self.w = Main_filter()
        self.setupUi(self)
        self.btn_load.clicked.connect(self.populate)
        Main_Metall.populate(self)

    def populate(self):
        con = psycopg2.connect("dbname=client_ user=su_ host=195.93.152.122 password=VN0st1")
        cur = con.cursor()
        cur.execute("""SELECT item, unit, "type", price, "number" FROM public.list """)
        self.tableWidget.setRowCount(0)
        for row, form in enumerate(cur):
            self.tableWidget.insertRow(row)
            for column, item in enumerate(form):
                # print(str(item))
                self.tableWidget.setItem(row, column, QTableWidgetItem(str(item)))
        con.close()

Вот код который должны по нажатию кнопки переносить данные в другую таблицу: ()

Python:
self.btn_add_cart.clicked.connect(self.ReverseData)

    def ReverseData(self):
        row = self.tableWidget.currentIndex().row()
        if row == -1:
            QMessageBox()
            QMessageBox.about(self, "Уведомление", "выберите")
            return

        database_connection = psycopg2.connect(
            "dbname=client_ user=su_ host=195.93.152.122 password=VN0st1")
        database_cursor = database_connection.cursor()

        # вытаскивает ячейку из таблицы и заносит в переменную
        sTest = self.tableWidget.model().data(self.tableWidget.currentIndex())

        # выборка элементов
        table_item = self.tableWidget.currentItem().text()
        table_unit = self.tableWidget.currentItem().text()
        table_type = self.tableWidget.currentItem().text()
        table_price = self.tableWidget.currentItem().text()
        table_number = self.tableWidget.currentItem().text()
        print(" \n Выбран строка-элементы: ", " ", table_item, table_unit, table_type, table_price, table_number)

        # кортедж элементов
        table_object = [table_item, table_unit, table_type, table_price, table_number]
        # запрос на добавление
        database_cursor.execute(
            'INSERT INTO public.zakaz (item, unit, "type", price, "number") VALUES (%s, %s, %s, %s, %s)',
            table_object)

        # закрытие БД
        database_connection.commit()
        database_connection.close()
        database_cursor.close()
 

Вложения

  • Screenshot_1.jpg
    Screenshot_1.jpg
    480,5 КБ · Просмотры: 2

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 583
457
83
наверное нужно так
Python:
# кортедж элементов
table_object = ((table_item, table_unit, table_type, table_price, table_number))
# запрос на добавление
database_cursor.execute(
                        'INSERT INTO public.zakaz (item, unit, type, price, number) VALUES (?, ?, ?, ?, ?)',
                        table_object)
 
Последнее редактирование:

Форум IT Специалистов