在sqlite3和python Tkinter中插入电子邮件字符串时出错



我正在编写一个简单的程序,根据在简单GUI上输入的数据更新基本数据库。我使用字符串格式,但在尝试输入电子邮件地址时不断出错,我知道应该用双引号括起来。我确信解决方案很简单——我只是不知道它是什么!

def update_rec():
# Connect to the db
conn = sqlite3.connect("address_book.db")
# create a cursor
c = conn.cursor()
fields = ["f_name", "s_name", "mob", "email"]
# Check which textboxes have data
update_txt = ""
update_field = ""
rec_no = str(id_no.get())
if len(f_name.get()) > 0:
update_txt = f_name.get()
update_field = fields[0]
elif len(s_name.get()) > 0:
update_txt = s_name.get()
update_field = fields[1]
elif len(mob.get()) > 0:
update_txt = mob.get()
update_field = fields[2]
elif len(email.get()) > 0:
update_txt = email.get()
update_field = fields[3]
else:
update_txt = ""
update_field = ""
c.execute("""UPDATE address_book SET  {0} = ?  WHERE {1} = ?""".format(update_field, update_txt), rec_no)
conn.commit()
conn.close()

我一直收到这个错误:

c.execute(""UPDATE address_book SET{0}=?WHERE{1}="".format(UPDATE_field,UPDATE_txt(,rec_no(sqlite3.OperationalError:接近"@gmail":语法错误

需要提供给.format()的内容与需要传递给c.execute()的内容混淆了。

分两步做,这样更容易理解。

你需要告诉我们rec_field应该是什么。它可能是类似idaddress_book_id的东西,或者?

rec_field = 'id' # you know what this should be...
qry = """UPDATE address_book 
SET {0} = ? 
WHERE {1} = ?;""".format(update_field, rec_field)
c.execute(qry, (update_txt,rec_no))

相关内容

最新更新