6.1数据库sqlite3基础
from tkinter import *
import sqlite3
import os
root= Tk()
root.title('数据库sqlite3操作')
root.geometry('400x400')
# sqlite3-------------------------------------------------
## 检查数据库文件是否存在,不存在就创建,user表 :
if not os.path.exists('demo.db'):
# 1.创建数据库文件
conn = sqlite3.connect('demo.db')
# 2.光标
c = conn.cursor()
# 3.建表 user
c.execute('''
CREATE TABLE user (
first_name TEXT,
last_name TEXT,
address_name TEXT,
city_name TEXT,
state_name TEXT,
zipcode_name integer
)
''')
# 提交数据库-函数-----------------------------------------------
def submit():
# 1.连接数据库
conn = sqlite3.connect('demo.db')
# 2.光标
c = conn.cursor()
# 3.提交数据
# Data to Insert
data = [
(f_name.get(), l_name.get(), address_name.get(), city_name.get(), state_name.get(), zipcode_name.get()),
# ('Jane', 'Smith', '[email protected]','Jane', 'Smith', '[email protected]')
]
# Insert Data
for row in data:
c.execute("INSERT INTO user (first_name, last_name, address_name, city_name, state_name, zipcode_name) VALUES (?, ?, ?, ?, ?, ?)", row)
# 4.保存设置
conn.commit()
# 5.关闭数据库
conn.close()
#清空输入框----
f_name.delete(0, END)
l_name.delete(0, END)
address_name.delete(0, END)
city_name.delete(0, END)
state_name.delete(0, END)
zipcode_name.delete(0, END)
# 查询数据库-函数-----------------------------------------------
def query():
# 1.连接数据库文件
conn = sqlite3.connect('demo.db')
# 2.光标
c = conn.cursor()
# 3.查询user表所有数据
c.execute("SELECT * FROM user")
rows = c.fetchall()
# 4.遍历数据
row_date = ''
for row in rows:
#row_date += str(row) + '\n'
# 拼接,如:名字
row_date += str(row[0]) + ''+ str(row[1])+ str(row[5]) + '\n'
Label(root, text=row_date).grid(row=8, column=0, columnspan=2)
# 5.关闭数据库
conn.close()
# 删除数据库-函数-----------------------------------------------
def delete():
conn = sqlite3.connect('demo.db')
c = conn.cursor()
c.execute("DELETE FROM user WHERE oid = " + delete_name.get())
delete_name.delete(0, END)
conn.commit()
conn.close()
# 更新数据库-函数----------------------第二个窗口-------------------------
# 查询并填入修改框
def update():
update = Tk()
update.geometry('400x400')
update.title('更新数据')
# 输入框
f_name_update = Entry(update, width=30)
f_name_update.grid(row=0, column=1, padx=20)
l_name_update = Entry(update, width=30)
l_name_update.grid(row=1, column=1, padx=20)
address_name_update = Entry(update, width=30)
address_name_update.grid(row=2, column=1, padx=20)
city_name_update = Entry(update, width=30)
city_name_update.grid(row=3, column=1, padx=20)
state_name_update = Entry(update, width=30)
state_name_update.grid(row=4, column=1, padx=20)
zipcode_name_update = Entry(update, width=30)
zipcode_name_update.grid(row=5, column=1, padx=20)
# 文字
f_name_label = Label(update, text='first_name')
f_name_label.grid(row=0, column=0)
l_name_label = Label(update, text='last_name')
l_name_label.grid(row=1, column=0)
address_name_label = Label(update, text='address')
address_name_label.grid(row=2, column=0)
city_name_label = Label(update, text='city')
city_name_label.grid(row=3, column=0)
state_name_label = Label(update, text='state')
state_name_label.grid(row=4, column=0)
zipcode_name_label = Label(update, text='zipcode')
zipcode_name_label.grid(row=5, column=0)
# 1.连接数据库文件
conn = sqlite3.connect('demo.db')
# 2.光标
c = conn.cursor()
# 3.查询user表+id的数据
id = delete_name.get()
c.execute("SELECT * FROM user WHERE oid = " + id )
rows = c.fetchall()
# 4.遍历数据
row_date = ''
for row in rows:
f_name_update.insert(0, row[0])
l_name_update.insert(0, row[1])
address_name_update.insert(0, row[2])
city_name_update.insert(0, row[3])
state_name_update.insert(0, row[4])
zipcode_name_update.insert(0, row[5])
# 5.关闭数据库
conn.close()
# 更新数据
def update_save():
# 1.连接数据库
conn = sqlite3.connect('demo.db')
# 2.光标
c = conn.cursor()
# 3.提交数据
# Data to Insert
data = [
(f_name_update.get(), l_name_update.get(), address_name_update.get(), city_name_update.get(),
state_name_update.get(), zipcode_name_update.get(), id),
# ('Jane', 'Smith', '[email protected]','Jane', 'Smith', '[email protected]')
]
# Insert Data
for row in data:
c.execute(
"UPDATE user SET first_name = ?, last_name = ?, address_name = ?, city_name = ?, state_name = ?, zipcode_name = ? WHERE oid = ?",
row)
# 4.保存设置
conn.commit()
# 5.关闭数据库
conn.close()
# 6.清空输入框---------------
f_name_update.delete(0, END)
l_name_update.delete(0, END)
address_name_update.delete(0, END)
city_name_update.delete(0, END)
state_name_update.delete(0, END)
zipcode_name_update.delete(0, END)
# 7.关闭修改窗口
update.destroy()
# 保存按钮
update_button = Button(update, text='保存',command=update_save)
update_button.grid(row=6, column=0, columnspan=2, padx=20, pady=5, ipadx=100)
# 输入框-----------------------------------------------
f_name = Entry(root,width=30)
f_name.grid(row=0,column=1,padx=20)
l_name = Entry(root,width=30)
l_name.grid(row=1,column=1,padx=20)
address_name = Entry(root,width=30)
address_name.grid(row=2,column=1,padx=20)
city_name = Entry(root,width=30)
city_name.grid(row=3,column=1,padx=20)
state_name = Entry(root,width=30)
state_name.grid(row=4,column=1,padx=20)
zipcode_name = Entry(root,width=30)
zipcode_name.grid(row=5,column=1,padx=20)
delete_name = Entry(root,width=30)
delete_name.grid(row=9,column=1,padx=20,pady=20)
# 文字-----------------------------------------------
f_name_label = Label(root,text='first_name')
f_name_label.grid(row=0,column=0)
l_name_label = Label(root,text='last_name')
l_name_label.grid(row=1,column=0)
address_name_label = Label(root,text='address')
address_name_label.grid(row=2,column=0)
city_name_label = Label(root,text='city')
city_name_label.grid(row=3,column=0)
state_name_label = Label(root,text='state')
state_name_label.grid(row=4,column=0)
zipcode_name_label = Label(root,text='zipcode')
zipcode_name_label.grid(row=5,column=0)
delete_name_label = Label(root,text='数据ID')
delete_name_label.grid(row=9,column=0)
# 按钮-----------------------------------------------
# 提交按钮
submit_button = Button(root,text='提交数据',command=submit)
submit_button.grid(row=6,column=0,padx=50)
# 查询按钮
query_button = Button(root,text='查询数据',command=query)
query_button.grid(row=6,column=1)
# 删除按钮
delete_button = Button(root,text='删除',command=delete)
delete_button.grid(row=10,column=0,columnspan=2,padx=20,pady=5,ipadx=100)
# 更新按钮
update_button = Button(root,text='更新',command=update)
update_button.grid(row=12,column=0,columnspan=2,padx=20,pady=5,ipadx=100)
root.mainloop()