将Entry小部件中的数据导出为SQL代码

时间:2016-04-07 14:29:03

标签: python sql tkinter sqlite

所以我之前发现这个非常有用的代码片段创建了输入框,当它们被创建时我可以编辑它们内部的内容。加载的数据来自SQL表。一旦我对输入框进行了编辑,我想提交数据以覆盖之前在该sql记录中的数据,因为它正在被编辑。我发现的代码就是:

for item in selectedetails:
        entry = Entry(top2)
        entry.insert(0, item)
        entry.pack()
        entries.append(entry)

我希望它能够输入sql代码。我试过这个,但它不起作用。我想我做错了。

def submitedit():
    for entry in entries:
        print(entry.get())



    db = sqlite3.connect('TestFile')
    cursor = db.cursor()

    cursor.execute('''UPDATE Table SET ID=?, Name=?, Desc=? WHERE ID=?''',
    ("?"," ?"," ?").format(entry.get()))
    cursor.close()
    db.commit()
    db.close()

我也试过这个:

    db = sqlite3.connect('TestFile')
    cursor = db.cursor()

    cursor.execute('''UPDATE Table SET ID=?, Name=?, Desc=? WHERE ID=?''',
    (entry.get())
    cursor.close()
    db.commit()
    db.close()

感谢。

1 个答案:

答案 0 :(得分:0)

with sqlite3.connect('TestFile') as db:
    cursor = db.cursor()
    cursor.row_factory = sqlite3.Row
    sql = "UPDATE Table  Name=?, Desc=? WHERE ID=?"
    cursor.execute(sql,(Name,Descr))
    db.commit()

请注意,将值放在cursor.execute行中的顺序必须与sql变量中使用的顺序匹配,否则将在错误的时间使用错误的值。此外,我已经取出了设置ID,因为你正在搜索哪个我猜测是你的主键,在数据库中你不应该编辑主键。主键也应自动递增。