@Abobik_228

Как правильно вносить изменения и новые данные в таблицу бд через gui на pyqt?

Только начинаю что-то делать в sqlite и PYQT и вообще новичок в python и ООП.
Функция click_btn при нажатии должна по идее добавлять в таблицу базы данных новой строкой информацию которую пользователь ввел в lineEdit для каждой колонки.

click_btn выводит через print значения введенные в lineEdit и примененные к переменным, но эти значения не добавляются в таблицу бд и вообще ничего не происходит с бд.
Сама база данных исправно работает, проблема именна ввода в неё значений из пользовательского интерфейса pyqt. Код сам по себе корявый, но суть самой проблемы так и не понял

import sys
from PyQt6.uic import loadUi
from PyQt6 import QtWidgets
from PyQt6.QtSql import QSqlDatabase, QSqlTableModel
from PyQt6.QtWidgets import QDialog, QApplication, QMainWindow, QMessageBox, QTableView
from guijob import *
import sqlite3

class MainWindow(QDialog):
    def __init__(self):
        super(MainWindow, self).__init__()
        loadUi("guijob.ui", self)
        self.tableWidget.setColumnWidth(0, 150)
        self.tableWidget.setColumnWidth(1, 150)
        self.tableWidget.setColumnWidth(2, 150)
        self.tableWidget.setColumnWidth(3, 150)
        self.tableWidget.setColumnWidth(4, 150)
        self.tableWidget.setColumnWidth(5, 150)

        self.pushButton.clicked.connect(self.click_btn)
        self.loaddata()


    def loaddata(self):

        with sqlite3.connect('Filmbase.db') as db:
            cur = db.cursor()
            cur.execute(""" CREATE TABLE IF NOT EXISTS Filmoteka( 
            name TEXT,
            director TEXT,
            surname_actor TEXT,
            data TEXT, 
            rating TEXT,
            views TEXT
            ) """)
            sqlstr = 'SELECT * FROM Filmoteka LIMIT 100'
            tablerow=0
            results = cur.execute(sqlstr)
            self.tableWidget.setRowCount(100)
            for row in results:
                self.tableWidget.setItem(tablerow, 0, QtWidgets.QTableWidgetItem(row[0]))
                self.tableWidget.setItem(tablerow, 1, QtWidgets.QTableWidgetItem(row[1]))
                self.tableWidget.setItem(tablerow, 2, QtWidgets.QTableWidgetItem(row[2]))
                self.tableWidget.setItem(tablerow, 3, QtWidgets.QTableWidgetItem(row[3]))
                self.tableWidget.setItem(tablerow, 4, QtWidgets.QTableWidgetItem(row[4]))
                self.tableWidget.setItem(tablerow, 5, QtWidgets.QTableWidgetItem(row[5]))
                tablerow+=1
                db.commit()




    def click_btn(self):
        name = self.lineEdit.text()
        director = self.lineEdit_2.text()
        surname_actor = self.lineEdit_3.text()
        data = self.lineEdit_4.text()
        rating = self.lineEdit_5.text()
        views = self.lineEdit_6.text()
        print(name, director, surname_actor, data, rating, views)
        insert = (name, director, surname_actor, data, rating, views)

        with sqlite3.connect('Filmbase.db') as db:
            cur = db.cursor()
            query = """INSERT INTO Filmoteka (name, director, surname_actor, data, rating, views) VALUES (?, ?, ?, ?, ?, ?)"""
            cur.execute(query, insert)
            db.commit()



# main
app = QApplication(sys.argv)
mainwindow = MainWindow()
widget = QtWidgets.QStackedWidget()
widget.addWidget(mainwindow)
widget.setFixedHeight(850)
widget.setFixedWidth(1120)
widget.show()
try:
    sys.exit(app.exec())
except:
    print("Exiting")
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
@Abobik_228 Автор вопроса
https://newbedev.com/no-data-sources-are-configure...
Тут нашел решение, после настройки источника данных для запуска sqlite
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы