Python - Error conexion mysql con Tkinter en python 2

 
Vista:
sin imagen de perfil

Error conexion mysql con Tkinter en python 2

Publicado por Jorge (2 intervenciones) el 25/03/2015 06:31:39
Hola
Estoy intentando hacer una pequeña aplicación en python 2 conectada a mysql con Tkinter
Solo llevo un formulario para dar de altas Clientes, lo estetico es lo de menos, se soluciona al final.... la funcionalidad es lo que me importa.
No puedo agregar un registro (o sea dar una alta en mi tabla)

Me marca este error, por cierto soy nuevo lo siento si estoy pasando algo por alto:
La salida de mi terminal al dar en el boton "guardar registro" es:

Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1489, in __call__
return self.func(*args)
File "proyecto.py", line 43, in guardar_registro
run_query(query)
File "proyecto.py", line 17, in run_query
cursor.execute(query) #ejecuta una consulta
File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute
self.errorhandler(self, exc, value)
File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
raise errorclass, errorvalue
OperationalError: (1054, "Unknown column 'id_cliente_var' in 'field list'")


Anexo mi código fuente (aclaro, la estetica del código es pesimo, por el momento esta en un solo archivo, esta en pañales la aplicación, solo quiero que funcione para continuar).
De antemano gracias.
Si alguién puede decirme que pasa :/

Anexo código fuente


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
##############Código
 
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
from Tkinter import *
import MySQLdb
 
DB_HOST = 'localhost'
DB_USER = 'root'
DB_PASS = 'contrasenia'
DB_NAME = 'Productos_Comerciales_DB'
 
def run_query(query=''):
	datos = [DB_HOST, DB_USER, DB_PASS, DB_NAME]
 
	conn = MySQLdb.connect(*datos) #conectar a la base de datos
	cursor = conn.cursor()         #crear un cursor
	cursor.execute(query)          #ejecuta una consulta
 
	if query.upper().startswith('SELECT'):
		data = cursor.fetchall()   #traer los resultados de un SELECT
	else:
		conn.commit()              #hacer efectiva la escritura de datos
		data = None
 
	cursor.close() 				   #cerrar el cursor
	conn.close()                   #cerrar la conexión
 
	return data
 
 
 
 
 
#Funciones
def ventana_clientes():
	clientes = Tk()
	clientes.title('-----Clientes-------')
	clientes.geometry("700x415+210+100")
	clientes.config(bg="#DADADA")
 
	def guardar_registro():
		query = "INSERT INTO Clientes (id_cliente, nombre_cliente, apellido_cliente, calle_direccion_cliente,
                numero_direccion_cliente, ciudad_cliente, estado_cliente, codigo_postal_cliente, telefono_cliente) VALUES
                ('id_cliente_var', 'nombre_cliente_var', 'apellido_cliente_var', 'calle_cliente_var', 'numero_casa_var', 
                'ciudad_cliente_var', 'estado_cliente_var', 'codigo_postal_cliente_var', 'tel_cliente_var');"
 
                run_query(query)
 
 
 
 
	#Etiquetas
	lbl_informacion_clientes = Label(clientes, text="INFORMACIÓN DEL CLIENTE",
     fg="black", bg="#DADADA", font=("Liberation Serif", 17)).place(x=100, y=10)
	lbl_id_cliente = Label(clientes, text="ID", fg="black", bg="#DADADA",
     font=("Arial", 12)).place(x=40, y =100)
	lbl_nombre_cliente = Label(clientes, text="Nombre del cliente",
     fg="black", bg="#DADADA", font=("Arial", 12)).place(x=40, y=40)
	lbl_apellido_cliente = Label(clientes, text="Apellido del cliente", fg="black",
     bg="#DADADA", font=("Arial", 12)).place(x=40, y=70)
	lbl_direccion = Label(clientes, text="DIRECCIÓN", fg="black", bg="#DADADA",
     font=("Liberation Serif", 17)).place(x=40, y=130)
	lbl_calle_cliente = Label(clientes, text="Nombre de la calle", fg="black",
     bg="#DADADA", font=("Arial", 12)).place(x=40, y=160)
	lbl_numero_calle_cliente = Label(clientes, text="Número int/ext", fg="black",
     bg="#DADADA", font=("Arial", 12)).place(x=40, y=190)
	lbl_ciudad_cliente = Label(clientes, text="Ciudad de residencia", fg="black",
     bg="#DADADA", font=("Arial", 12)).place(x=40, y=220)
	lbl_estado_cliente = Label(clientes, text="Estado", fg="black", bg="#DADADA",
     font=("Arial", 12)).place(x=40, y=280)
	lbl_codigo_postal = Label(clientes, text="Código postal", fg="black",
     bg="#DADADA", font=("Arial", 12)).place(x=40, y=250)
	lbl_contacto = Label(clientes, text="CONTACTO CLIENTE", fg="black",
     bg="#DADADA", font=("Liberation Serif", 17)).place(x=40, y=310)
	lbl_telefono_cliente = Label(clientes, text="Telefono", fg="black",
     bg="#DADADA", font=("Arial", 12)).place(x=40, y=345)
 
    #Cajas de texto
 
	id_cliente_var = IntVar()
	txt_id_cliente = Entry(clientes, bd=2, width=9, textvariable=id_cliente_var, fg="black").place(x=230, y=100)
	nombre_cliente_var = StringVar()
	txt_nombre_cliente = Entry(clientes, bd=2, width=14, textvariable=nombre_cliente_var, fg="black").place(x=230, y=40)
	apellido_cliente_var = StringVar()
	txt_apellido_cliente = Entry(clientes, bd=2, width=14, textvariable=apellido_cliente_var, fg="black").place(x=230, y=70)
	calle_cliente_var = StringVar()
	txt_calle_cliente = Entry(clientes, bd=2, textvariable=calle_cliente_var, fg="black").place(x=230, y=160)
	numero_casa_var = IntVar()
	txt_numero_calle_cliente = Entry(clientes, bd=2, width=8, textvariable=numero_casa_var, fg="black").place(x=230, y=190)
	ciudad_cliente_var = StringVar()
	txt_ciudad_cliente = Entry(clientes, bd=2, width=13, textvariable=ciudad_cliente_var, fg="black").place(x=230, y=220)
	estado_cliente_var = StringVar()
	txt_estado_cliente = Entry(clientes, bd=2, width=13, textvariable=estado_cliente_var, fg="black").place(x=230, y=280)
	codigo_postal_cliente_var = IntVar()
	txt_codigo_postal = Entry(clientes, bd=2, width=10, textvariable=codigo_postal_cliente_var, fg="black").place(x=230, y=250)
	tel_cliente_var = IntVar()
	txt_telefono_cliente = Entry(clientes, bd=2, width=12, textvariable=tel_cliente_var, fg="black").place(x=230, y=345)
 
	#Botones
	btn_guardar = Button(clientes, text="Guardar Cliente", command=guardar_registro).place(x=540, y=300)
	btn_cancelar = Button(clientes, text="Cancelar", command=clientes.quit).place(x=560, y=340)
 
	clientes.mainloop()
 
 
 
 
 
 
ventana_principal = Tk()
ventana_principal.geometry("1000x600+170+80")
ventana_principal.title("Decima Technologies")
#Barra de menus
barra_menu = Menu(ventana_principal)
#Menus
menu_clientes = Menu(barra_menu)
menu_empleados = Menu(barra_menu)
menu_productos = Menu(barra_menu)
#Comandos de clientes
menu_clientes.add_command(label="Lista de clientes")
menu_clientes.add_separator()
menu_clientes.add_command(label="Informacion completa de clientes")
menu_clientes.add_separator()
menu_clientes.add_command(label="Ingresar nuevo cliente", command=ventana_clientes)
menu_clientes.add_command(label="Actualizar cliente")
menu_clientes.add_command(label="Eliminar cliente")
#Comandos de empleados
menu_empleados.add_command(label="Lista empleados")
menu_empleados.add_command(label="Informacion de empleados")
menu_empleados.add_command(label="Lista de Salarios de empleados")
menu_empleados.add_separator()
menu_empleados.add_command(label="Ingresar nuevo empleado")
menu_empleados.add_command(label="Actualizar empleado")
menu_empleados.add_command(label="Eliminar empleado")
#Comandos de productos
menu_productos.add_command(label="Lista de productos disponibles")
menu_productos.add_separator()
menu_productos.add_command(label="Ingresar nuevo producto")
menu_productos.add_command(label="Actualizar producto")
menu_productos.add_command(label="Eliminar producto")
####
barra_menu.add_cascade(label="Clientes", menu=menu_clientes)
barra_menu.add_cascade(label="Empleados", menu=menu_empleados)
barra_menu.add_cascade(label="Productos", menu=menu_productos)
#Menu Empleados
 
ventana_principal.config(menu=barra_menu)
ventana_principal.mainloop()
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Error conexion mysql con Tkinter en python 2

Publicado por xve (1646 intervenciones) el 25/03/2015 08:29:26
Hola Jorge, por el error que te da, puede ser que en la base de datos no exista el campo id_cliente_var?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Error conexion mysql con Tkinter en python 2

Publicado por Jorge (2 intervenciones) el 25/03/2015 17:25:21
Hola
Ese es el nombre de la variable donde se guarda lo que ingreso en la caja de texto, los nombres de las columnas en mi base de datos estan en el query del código, y mi campoes id_cliente, si esta bien, lo queno se si este bien es poner las variables donde van los campos que quiero ingresar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar