我尝试保存一个整数,它保存为一个列表,即SQLITE PYTHON

lvjbypge  于 2022-11-15  发布在  SQLite
关注(0)|答案(1)|浏览(178)

我在这部分代码中有以下问题,我解释说:我有一个直接从数据库填充的组合框,从那里我获得数据,然后用一个按钮执行一个函数来获取组合框数据的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

a5g8bdjr

a5g8bdjr1#

cursor.fetchall()返回SELECT查询的所有结果的列表,以便您知道是否有多个条目与WHERE语句匹配,您将对其执行操作。而cursor.fetchone()只返回元组中的第一个结果,因此需要提取其中的第一个元素。
您可以将cursor.fetchall()语句转换为cursor.fetchone()[0],或者只使用cursor.fetchall()[0][0]获取第一个元素,这将比fetchone()[0]稍微慢一些。

相关问题