Операционная ошибка нет такого столбца SQLite 3 с PyQt5 - PullRequest
0 голосов
/ 04 мая 2020

Я могу получить результаты из элементов первого столбца при запросе к базе данных. Все остальные столбцы: «Нет такого столбца».

Я запрашиваю раскрывающиеся опции 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 имеет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...