簡體   English   中英

將 Python 和 Tkinter 的變量插入到 Sqlite3 表中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM