如图删除编码1后,添加是从最后面开始,怎么让她从前面开始,来个大佬教教我
from tkinter import *
import pymysql
from tkinter.messagebox import *
from tkinter import ttk
def get_connect():
conn = pymysql.connect(host='localhost', user="root", passwd='123456', database='db_phone')
return conn
def create():
root = Tk()
root.geometry('700x700')
root.title('通讯录管理系统')
Label(root, text="编号:").place(relx=0, rely=0.05, relwidth=0.1)
Label(root, text="姓名:").place(relx=0.5, rely=0.05, relwidth=0.1)
Label(root, text="电话:").place(relx=0.5, rely=0.1, relwidth=0.1)
sid1 = StringVar()
name1 = StringVar()
phone1 = StringVar()
Entry(root, textvariable=sid1).place(relx=0.1, rely=0.05, relwidth=0.37, height=25)
Entry(root, textvariable=name1).place(relx=0.6, rely=0.05, relwidth=0.37, height=25)
Entry(root, textvariable=phone1).place(relx=0.6, rely=0.1, relwidth=0.37, height=25)
def add():
connection = get_connect()
cur = connection.cursor(cursor=pymysql.cursors.DictCursor)
obj = treeview.get_children() # 获取所有对象
for o in obj:
treeview.delete(o)
name = name1.get()
phone = phone1.get()
try:
cur.execute('insert into person(name,phone) values ("%s","%s")' % (name, phone))
connection.commit()
except Exception as e:
connection.rollback()
raise e
finally:
connection.close()
search_all()
showinfo('提示', '添加成功!')
def update():
obj = treeview.get_children() # 获取所有对象
for o in obj:
treeview.delete(o)
connection = get_connect()
cur = connection.cursor()
id =sid1.get()
newname = name1.get()
newphone = phone1.get()
try:
cur.execute('update person set name="' + newname + '",phone="' + newphone + '" where id="' + id + '"')
connection.commit()
except Exception as e:
connection.rollback()
raise e
finally:
connection.close()
search_all()
showinfo('提示', '修改成功!')
def delete():
id =sid1.get()
conn = pymysql.connect(host='localhost', user="root", passwd="123456", database='db_phone')
cur = conn.cursor()
cur.execute('delete from person where id="' + id + '"')
conn.commit()
showinfo('提示', '删除成功!')
search_all()
def search():
obj = treeview.get_children() # 获取所有对象
for o in obj:
treeview.delete(o)
into = int(sid1.get())
conn = pymysql.connect(host='localhost', user="root", passwd="123456", database='db_phone')
cur = conn.cursor()
sql = 'select * from person ;'
cur.execute(sql)
all = cur.fetchall()
for i in range(len(all)):
for j in all:
if into == j[0]:
treeview.insert('', i, value=(j[0], j[1], j[2]))
break
break
def search_all():
obj = treeview.get_children() # 获取所有对象
for o in obj:
treeview.delete(o)
conn = pymysql.connect(host='localhost', user="root", passwd="123456", database='db_phone')
cur = conn.cursor()
sql = 'select * from person ;'
cur.execute(sql)
f = cur.fetchall()
for i in range(len(f)):
# for j in range(len(i)):
treeview.insert('', i, value=(f[i][0], f[i][1], f[i][2]))
conn.close()
Button(root, text="添加信息", command=add).place(relx=0.03, rely=0.2, width=100)
Button(root, text="修改信息", command=update).place(relx=0.23, rely=0.2, width=100)
Button(root, text="删除信息", command=delete).place(relx=0.43, rely=0.2, width=100)
Button(root, text="查询个人信息", command=search).place(relx=0.63, rely=0.2, width=100)
Button(root, text="查询所有信息", command=search_all).place(relx=0.83, rely=0.2, width=100)
columns = ('编号', '姓名', '电话')
treeview = ttk.Treeview(root, show='headings', columns=columns)
treeview.column('编号', width=150, anchor='center')
treeview.column('姓名', width=150, anchor='center')
treeview.column('电话', width=150, anchor='center')
treeview.heading('编号', text='编号')
treeview.heading('姓名', text='姓名')
treeview.heading('电话', text='电话')
treeview.place(rely=0.3, relwidth=0.99)
if name == 'main':
get_connect()
create()
mainloop()
那就是id 倒排。插入是不分这个顺序的,就是你展示的时候把search_all() 函数里的 sql = 'select * from person ;' 改成ql = 'select * from person order by id desc ;'
如果是指插入记录的id值不希望自增的话,要修改下对应表的主键配置,去掉自增,然后在代码的add()方法中根据自定义的规则给id。
如果是指显示,则可以在search_all()的方法中修改sql,让Sql查到的内容符合你想要的顺序。
你要插入到指定位置的意思,那么就要设计结构上可以支持才行
MySQL与Python
https://blog.csdn.net/weixin_52263256/article/details/127139186