python和mysqle问题

问题遇到的现象和发生背景

如图删除编号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()

运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果

编号是主键,不归你控制
你要是不希望显示主键,那查询的时候就别显示,排序按姓名排序,不就得了