如何解决使用Tkinter生成Generete随机ID SQlite3
我正在尝试使用TKinter库构建库GUI。我有一个TreeView显示数据库中的数据,但我想自动生成ID列。创建表的代码带有注释,因为我已经运行了一次并且创建了表。 The error I am getting is this.<<<<<<<<
def Add_New():
#Create Second Window
add_win=Toplevel()
add_win.geometry("500x310")
add_win.title("Add a new item")
#Create a database or connect to one
conn=sqlite3.connect('warehouse.db')
#Create cursor
c=conn.cursor()
#Create Table ONLY ONCE after that comment it.
#c.execute("""CREATE TABLE inventory(
# id_no integer primary key AUTOINCREMENT,# customer_name text,# part_no integer,# tool_no text,# descr_item_produced text,# customer_prod_code text,# location_item text,# bar_code text,# notes_comments text
# )""")
#Commit Changes
conn.commit()
#Create Submit Function for New Item
def submit():
conn=sqlite3.connect('warehouse.db')
#Create cursor
c=conn.cursor()
#Insert Into Table
c.execute("INSERT INTO inventory VALUES(:c_name,:p_no,:t_no,:d_item,:c_code,:l_item,:b_code,:n_comm)",{
'c_name' : c_name.get(),'p_no' : p_no.get(),'t_no':t_no.get(),'d_item':d_item.get(),'c_code':c_code.get(),'l_item':l_item.get(),'b_code':b_code.get(),'n_comm':n_comm.get(),})
#Commit Changes
conn.commit()
#Close Connection with db
conn.close()
解决方法
尽管您为AUTOINCREMENT
给出了id_no
,但我还是希望按照以下方法进行操作,并从约束中删除AUTOINCREMENT
:
def id_no():
mydb = mysql.connector.connect(host='localhost',user='root',passwd='root',database='warehouse')
mycursor = mydb.cursor()
sql = "select id_no from warehouse"
mycursor.execute(sql)
rows = mycursor.fetchall()
for i in rows :
id_no = i
try:
return id_no[0]+1
except:
return int(1)
mydb.close()
并在id_no()
函数中传递函数submit()
。
您应该在执行sql命令时包括id_no
列,以免发生错误。
还可以在从表中删除一行后自动设置正确的数字, 使用以下sql命令。
sql1 = "SET @rank:=0;"
sql2 = "update patients set id_no=@rank :=@rank+1;"
mydb = mysql.connector.connect(host='localhost',database='warehouse')
mycursor = mydb.cursor()
mycursor.execute(sql1)
mycursor.execute(sql2)
mydb.commit()
mydb.close()
希望能回答您的问题。
,您可以在INSERT语句中将list(Bus[Bus['NAME'].str.startswith("S")].index)
作为自动增量字段NULL
的内容进行传递:
id_no
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。