[英]Insert Variables With Python And Tkinter, Into Sqlite3 Table
對不起,這是我的第一篇文章。 我嘗試將使用 tkinter 條目(python)獲得的 sqlite3 表數據插入,但我總是在表中獲得空字段。我的代碼:
import sqlite3
from tkinter import *
def data_entry():
CDB.execute('insert into COSTUMERS (NAME,CODE)values(?,?)', (NAME_E,CODE_E))
DB.commit()
CDB.close()
DB.close()
X=Tk()
NAME=StringVar()
CODE=StringVar()
DB=sqlite3.connect('DB.db')
CDB=DB.cursor()
CDB.execute('''create table if not exists COSTUMERS
(ID integer primary key autoincrement,
NAME text(20), CODE text(10))''')
NAME_E=Entry(X,textvariable=NAME).pack()
CODE_E=Entry(X,textvariable=CODE).pack()
SAVE=Button(X,text='SAVE',command=data_entry).pack()
X.mainloop()
我認為你應該重構你的代碼。
首先對sql命令使用一個命名約定,即大寫
命令和小寫的 rest。
這也與代碼有關,請參見 pep 8
我修改了你的腳本,在 sqlite 你不需要聲明一個自動增量字段
如果您將其聲明為主鍵。
如您所見,我沒有關閉 cursor 和數據庫以插入更多記錄
從所附的圖片。
如果你使用textvariable,你甚至不需要聲明Entry,你可以使用
這些直接傳遞值。
#!/usr/bin/python3
import tkinter as tk
import sqlite3 as lite
def data_entry():
sql = "INSERT INTO customers (customer,code)VALUES(?,?)"
args = (customer.get(),code.get())
print(sql, args)
cur.execute(sql, args)
dbms.commit()
sql = "SELECT * FROM customers"
cur.execute(sql)
rs = cur.fetchall()
for i in rs:
print(i)
#cur.close()
#dbms.close()
tk.X=tk.Tk()
customer = tk.StringVar()
code = tk.StringVar()
dbms = lite.connect('DB.db')
cur = dbms.cursor()
sql = "CREATE TABLE IF NOT EXISTS customers (customer_id INTEGER PRIMARY KEY, customer TEXT, code TEXT);"
cur.execute(sql)
tk.Entry(tk.X,textvariable=customer).pack()
tk.Entry(tk.X,textvariable=code).pack()
tk.Button(tk.X, text="Save", command=data_entry).pack()
tk.X.mainloop()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.