Я могу получить результаты из элементов первого столбца при запросе к базе данных. Все остальные столбцы: «Нет такого столбца».
Я запрашиваю раскрывающиеся опции QComboBox.
Вот мой запрос, который дает ответ.
query = "SELECT * FROM learner_data where ADM = " + self.stream_combo.currentText()
В этом ADM являются целыми числами
Вот еще один столбец с текстом, который не дает результатов.
query = "SELECT * FROM learner_data where STREAM = " + self.stream_combo.currentText()
Так была создана таблица
def create_learner_table(self):
try:
conn = sqlite3.connect("mydb.db")
cur = conn.cursor()
cur.execute('''CREATE TABLE IF NOT EXISTS learner_data(ADM INT NOT NULL,NAME TEXT NOT NULL,CLASS TEXT NOT NULL,STREAM TEXT NOT NULL,CATEGORY TEXT NOT NULL,GENDER TEXT NOT NULL,COUNTY TEXT NOT NULL,PARENT TEXT NOT NULL,PARENT_CONTACT TEXT NOT NULL,PRIMARY KEY(CLASS,STREAM,CATEGORY,NAME,ADM))''');
conn.commit()
conn.close()
except:
QMessageBox.warning(MainWindow,"Failed","Table not created.")
Вот как они были вставлены в базу данных
def add_learner(self):
if self.leaner_entry.text() == "":
QMessageBox.information(MainWindow,"Warning","Learner's Full Name is mandatory.")
elif self.adm_entry.text() == "":
QMessageBox.information(MainWindow,"Warning","Learner's admission number is missing.")
elif self.class_combo_2.currentText()== "Select Class":
QMessageBox.information(MainWindow,"Warning","Select Class")
elif self.stream_combo_2.currentText() == "Select Stream":
QMessageBox.information(MainWindow,"Warning","Select Stream.")
elif self.gender_combo.currentText() == "Select Gender":
QMessageBox.information(MainWindow,"Warning","Select Gender")
elif self.categ_combo.currentText() == "Select Category":
QMessageBox.information(MainWindow,"Warning","Select Category")
elif self.county_combo.currentText() == "Select County":
QMessageBox.information(MainWindow,"Warning","Select County")
elif self.parent_contact_entry.text() == "":
QMessageBox.information(MainWindow,"Warning","Parent/Guardian's contact is mandatory")
else:
try:
learner_info = self.leaner_entry.text()
adm_info = self.adm_entry.text()
class_info = self.class_combo_2.currentText()
stream_info = self.stream_combo_2.currentText()
categ_info = self.categ_combo.currentText()
gender_info = self.gender_combo.currentText()
county_info = self.county_combo.currentText()
parent_info = self.parent_entry.text()
parent_contact_info = self.parent_contact_entry.text()
conn= sqlite3.connect("mydb.db")
cur = conn.cursor()
cur.execute("INSERT INTO learner_data(ADM,NAME,CLASS,STREAM,CATEGORY,GENDER,COUNTY,PARENT,PARENT_CONTACT) VALUES(?,?,?,?,?,?,?,?,?)",(adm_info,learner_info,class_info,stream_info,categ_info,gender_info,county_info,parent_info,parent_contact_info))
QMessageBox.information(MainWindow,"Success","Learner details successfully added.")
conn.commit()
self.fetch_learner_data()
self.fetch_all_learner_data()
self.clear()
conn.close()
except:
QMessageBox.warning(MainWindow,"Warning","Learner not captured")
Ошибка:
Traceback (последний вызов был последним):
Файл "D: \ Python \ PyQt5 \ Proper 2.py ", строка 1233, в fetch_learner_data_from_combo
result = connection.execute (query)
sqlite3.OperationalError: нет такого столбца: EAGLE
[Завершено за 18,2 с]
EAGLE - это то, что QComboBox currentText
имеет