Keeps getting "error binding parameter 0 - probably unsupported type"
I'm using eric4 (qtdesigner, pyqt, python, etc) with sqlite and I keep getting "error binding parameter 0 - probably unsupported type" when I'm running the program I've coded.
I've made some GUIs using eric4 + qtdesigner and generated dialog codes. When one of the buttons of the windows I've made in qtdesigner are pressed, it should access the database and would then commits and saves the information in the database. I've made a separate py file for accessing and saving for the database.
Here are parts of my code which are most likely sources of the error I keep getting.
At generated dialog of the ui (which I imported the separate py file):
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)
And this at the database accessing and writing which is on a separate py file:
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()
I've read some searches at google that it might be the quotation marks and ? parameters but I've checked and they are correct it seems. Also read somewh开发者_如何学Cere that it has to do with the character map (UTF?) but I honestly don't know how to check... I've also added some print to see if they are showing the correct data I've input and they are correct. So it's quite boggling why I'm still getting the error.
Any help is much appreciated bows deeply
QlineEdit.text()
returns a QString
. Pass it to the unicode
constructor to get something usable.
I was sort of able to reproduce this.
If you pass a string or a number or even a date as Nik
, everything works. The error you describe happens only if you pass something strange as Nik
, e.g. a class or a function.
Check that invocations of input_data
pass a correct Nik
. Most probably a ()
is forgotten somewhere so a class or a function is passed instead of an instance or function's result.
精彩评论