Ошибки при попытке вставить данные в sqlite3 - Ошибка привязки параметра 0 - возможно, неподдерживаемый тип - PullRequest
0 голосов
/ 01 сентября 2018

Я пытаюсь вставить данные из текстовых полей Kivy в базу данных sqlite3, но получаю следующую проблему. Фрагмент кода

def save(self):

    conn = Database.db_connect()
    cursor = conn.cursor()

    # kivy textinput widgets are assigned variable no, name
    no = self.empid_text_input
    name = self.empname_text_input.text

    try:
        save_index_sql="INSERT INTO EmpInfo (EmpID , EmpName) VALUES (?,?)"
        conn.execute(save_index_sql, (no, name)) # Causes Error
        conn.commit()
        conn.close()
    except sqlite3.IntegrityError as e:
        print("Error: ",e)

# THROWS ERROR ----> sqlite3.InterfaceError: Ошибка привязки параметра 0 - возможно, неподдерживаемый тип.

Файл базы данных Emp.db содержит следующие таблицы и структуру: EmpInfo & EmpImage

  1. EmpInfo CREATE TABLE EmpInfo (EmpID целочисленный ПЕРВИЧНЫЙ КЛЮЧ, текст EmpName NOT NULL)

  2. EmpImage СОЗДАТЬ ТАБЛИЦУ EmpImage (EmpID целочисленный ПЕРВИЧНЫЙ КЛЮЧ, EmpPhoto BLOB NOT NULL)

Кастинг дает следующие результаты:

        # conn.execute(save_index_sql,(int(no), str(name))) # RETURNS----> TypeError: int() argument must be a string, a bytes-like object or a number, not 'TextInput'
        # conn.execute(save_index_sql, (str(no), str(name))) # RETURNS----> Error:  datatype mismatch

1 Ответ

0 голосов
/ 01 сентября 2018

Вы пытаетесь вставить объект TextInput. Вы хотите вставить текстовое значение TextInput.

Это также должно быть преобразовано в integer

Изменение:

no = self.empid_text_input

Кому:

no = int(self.empid_text_input.text)

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