c .fetchall возвращает не тип - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть этот фрагмент кода, который должен выбрать все столбцы из таблицы "BTSFinal", где -PCode- равен записи пользователя -Product_Codev-, вставить его в другую таблицу -BTSTempt- и выбрать наименьший идентификационный номер из это.

                    c.execute("UPDATE BTSTempt SET ID=(SELECT ID FROM BTSFinal WHERE PCode = ?)",(int(Product_Codev.get()),))
                    c.execute("UPDATE BTSTempt SET Date_in=(SELECT Date_in FROM BTSFinal WHERE PCode = ?)",(int(Product_Codev.get()),))
                    c.execute("UPDATE BTSTempt SET PCode=(SELECT PCode FROM BTSFinal WHERE PCode = ?)",(int(Product_Codev.get()),))
                    c.execute("UPDATE BTSTempt SET PName=(SELECT PName FROM BTSFinal WHERE PCode = ?)",(int(Product_Codev.get()),)) 
                    c.execute("UPDATE BTSTempt SET Inc_Price=(SELECT Inc_Price FROM BTSFinal WHERE PCode = ?)",(int(Product_Codev.get()),))
                    c.execute("UPDATE BTSTempt SET Quantity_In=(SELECT Quantity_In FROM BTSFinal WHERE PCode = ?)",(int(Product_Codev.get()),))
                    c.execute("UPDATE BTSTempt SET Outg_Price=(SELECT Outg_Price FROM BTSFinal WHERE PCode = ?)",(int(Product_Codev.get()),))
                    c.execute("UPDATE BTSTempt SET Quantity_Out=(SELECT Quantity_Out FROM BTSFinal WHERE PCode = ?)",(int(Product_Codev.get()),))
                    c.execute("UPDATE BTSTempt SET Description=(SELECT Description FROM BTSFinal WHERE PCode = ?)",(int(Product_Codev.get()),))
                    c.execute("SELECT MIN(ID) FROM BTSTempt")
                    Minid = c.fetchall()[-1]
                    Minidpre = Minid[0]
                    MinimumID=int(Minidpre)

Но что я понял из этой ошибки

MinimumID=int(Minidpre)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'

Нет ли совпадения между таблицей "BTSFinal" в столбце "PCode" и записью, которая не является случай, и я абсолютно уверен, что есть совпадения

Вот схема таблицы -BTSFinal-

  • ID INTEGER PRIMARYKEY
  • Date_in TEXT
  • PCode INTEGER
  • PName TEXT
  • Inc_Price INTEGER
  • Количество_In INTEGER
  • Outg_Price INTEGER
  • Количество_Out INTEGER
  • Описание TEXT

и схема -BTSTempt- идентична ему. Но это всегда дает мне эту ошибку, которая говорит о том, что таблица -BTSTempt- пуста, что действительно имеет место, когда я пытаюсь открыть ее через sql viewer

Большое спасибо и надеюсь, что мой вопрос ясен.

1 Ответ

1 голос
/ 05 февраля 2020

Является ли это " несоответствием между таблицей" BTSFinal "в столбце" PCode "" истинно, является одной из возможностей. Другая возможность состоит в том, что нет строки BTSTemp для обновления. Это кажется более вероятным. Возможно, первый UPDATE на самом деле должен быть INSERT.

Имея только знания о том, что опубликовано в вопросе (то есть, не зная, для чего еще будет использоваться таблица BTSTemp), более простым способом получить MIN(ID) может быть:

"SELECT MIN(ID) from BTSFinal where Pcode = ?)"

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