Продолжает получать «параметр привязки ошибки 0 - возможно, неподдерживаемый тип» - PullRequest
1 голос
/ 28 февраля 2011

Я использую eric4 (qtdesigner, pyqt, python и т. Д.) С sqlite и получаю «параметр привязки ошибки 0 - возможно, неподдерживаемый тип» при запуске программы, которую я кодировал.

Я создал несколько графических интерфейсов с использованием eric4 + qtdesigner и сгенерировал диалоговые коды.Когда нажата одна из кнопок окон, которые я сделал в qtdesigner, он должен получить доступ к базе данных, а затем зафиксировать и сохранить информацию в базе данных.Я создал отдельный py-файл для доступа к базе данных и ее сохранения.

Вот части моего кода, которые, скорее всего, являются источником ошибки, которую я продолжаю получать.

В сгенерированном диалоговом окнепользовательский интерфейс (который я импортировал отдельный файл py):

    def on_button_Save_released(self):
        """
        Slot documentation goes here.
        """
        # TODO: not implemented yet
        Nik = self.LineEdit_Nickname.text()
        NFirst = self.LineEdit_NameFirst.text()
        NMid = self.LineEdit_NameMiddle.text()
        NLast = self.LineEdit_NameLast.text()
        BMon = self.ComboBox_BirthMonth.currentText()
        BDay = self.ComboBox_BirthDay.currentText()
        BYear = self.ComboBox_BirthYear.currentText()
        CNum = self.LineEdit_ContactNum.text()
        EM = self.LineEdit_EMail.text()
        MAd = self.LineEdit_MailAdd.text()

        self.NMem = NewMem()
        self.NMem.input_data(Nik,  NFirst, NMid,  NLast,  BMon,  BDay,  BYear,  CNum,  EM,  MAd)

И это при доступе и записи в базе данных, которая находится в отдельном файле py:

import sqlite3
import datetime, time

con = sqlite3.connect("Members.db") #access database
cur = con.cursor()  #cursor object for database


class NewMem:
    def input_data(self,  Nik,  NFirst, NMid,  NLast,  BMon,  BDay,  BYear,  CNum,  EM,  MAd):

        def adapt_datetime(ts):
            return time.mktime(ts.timetuple())

        #Get current time and date
        sqlite3.register_adapter(datetime.datetime, adapt_datetime) 
        now = datetime.datetime.now()  

        #created if first time to make a table
        try: 
            cur.execute('create table Members (ID integer primary key autoincrement not null, Nick string not null, NameFirst string, NameMiddle string, NameLast string, BirthMonth string, BirthDay string, BirthYear string, ContactNum string, EMail string, MailAdd string, MemberSince string)')
        except:
            pass

        cur.execute("insert into Members (Nick,NameFirst,NameMiddle,NameLast,BirthMonth,BirthDay,BirthYear,ContactNum,EMail,MailAdd,MemberSince) values (?,?,?,?,?,?,?,?,?,?,?)",(Nik,  NFirst, NMid,  NLast,  BMon,  BDay,  BYear,  CNum,  EM,  MAd, now))

        con.commit()
        cur.close()
        con.close()

Я прочиталнекоторые поиски в Google, что это может быть кавычки и?параметры, но я проверил, и они верны, кажется.Также читайте где-нибудь, что это имеет отношение к карте символов (UTF?), Но я, честно говоря, не знаю, как это проверить ... Я также добавил некоторые распечатки, чтобы увидеть, показывают ли они правильные данные, которые я ввел, иони верны.Так что довольно удивительно, почему я все еще получаю сообщение об ошибке.

Любая помощь очень ценится глубоко кланяется

Ответы [ 2 ]

3 голосов
/ 28 февраля 2011

QlineEdit.text() возвращает QString. Передайте его конструктору unicode, чтобы получить что-то полезное.

1 голос
/ 28 февраля 2011

Я был в состоянии воспроизвести это.

Если вы передаете строку или число или даже дату как Nik, все работает. Ошибка, которую вы описываете, возникает, только если вы передаете что-то странное, например Nik, например класс или функция.

Убедитесь, что вызовы input_data проходят правильно Nik. Скорее всего, () где-то забыто, поэтому вместо экземпляра или результата функции передается класс или функция.

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