Только начинаю что-то делать в 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")