我在这部分代码中有以下问题,我解释说:我有一个直接从数据库填充的组合框,从那里我获得数据,然后用一个按钮执行一个函数来获取组合框数据的ID,然后将ID保存在数据库中,问题是当执行SQL查询来获得ID时,它被保存为列表,所以它对我不起作用我只想保存整数
def guardar():
listaId = []
cursor = conexion.cursor()
在这里,我使用从组合框获得的数据进行查询,以获得每个表的ID,但ID保存为列表
for cilindros, empresa, tamano, pico in lista:
cursor.execute("SELECT id FROM empresas WHERE empresa =?", (empresa.get(),))
empresaId = cursor.fetchall()
cursor.execute("SELECT id FROM tamano_precio WHERE tamano =?", (tamano.get(),))
tamanoId = cursor.fetchall()
cursor.execute("SELECT id FROM picos WHERE pico =?", (pico.get(),))
picoId = cursor.fetchall()
listaId.append([empresaId, tamanoId, picoId])
cursor.close()
在这里,id存储在数据库中
cursor2 = conexion.cursor()
for empresaId, tamanoId, picoId in listaId:
cursor2.execute("INSERT INTO cilindros(empresa_id, pico_id, tamano_id, jefesf_id) VALUES (?, ?, ?, ?)", (str(empresaId), str(picoId), str(tamanoId), str(guardarCedula)))
conexion.commit()
cursor2.close()
这里是组合框,您得到的数据是公司名称、规模和峰值
ventana5 = Toplevel()
cantidadVacios = cantidadCilindros.get() +1
lista = []
for cilindros in range(1, cantidadVacios):
titulo = tk.LabelFrame(ventana5, text= f"Cilindro {cilindros}")
titulo.pack()
empresa = ttk.Combobox(titulo, width=11)
empresa["values"] = emp()
empresa.current(0)
empresa.pack()
tamano = ttk.Combobox(titulo, width=11)
tamano["values"] = taman()
tamano.current(0)
tamano.pack()
pico = ttk.Combobox(titulo, width=11)
pico["values"] = pic()
pico.current(0)
pico.pack()
lista.append([cilindros, empresa, tamano, pico])
Button(ventana5, text="Guardar", command=guardar).pack()
它们的存储方式如下:enter image description here
下面是我想要的保存方式:enter image description here
1条答案
按热度按时间a5g8bdjr1#
cursor.fetchall()
返回SELECT查询的所有结果的列表,以便您知道是否有多个条目与WHERE语句匹配,您将对其执行操作。而cursor.fetchone()
只返回元组中的第一个结果,因此需要提取其中的第一个元素。您可以将
cursor.fetchall()
语句转换为cursor.fetchone()[0]
,或者只使用cursor.fetchall()[0][0]
获取第一个元素,这将比fetchone()[0]
稍微慢一些。