Python - Pasar variable en sentencia mysql

 
Vista:
sin imagen de perfil
Val: 7
Ha disminuido su posición en 199 puestos en Python (en relación al último mes)
Gráfica de Python

Pasar variable en sentencia mysql

Publicado por Matias (4 intervenciones) el 24/06/2020 20:53:05
Buen día

Quería saber cómo pasar una variable por código mysql

1
micursor.execute("CREATE DATABASE IF NOT EXISTS CÓMO PONGO LA VARIABLE ACÁ?")

Y si es una variable .get como la pasaría? sería lo mismo?

Desde ya gracias
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 joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Pasar variable en sentencia mysql

Publicado por joel (901 intervenciones) el 25/06/2020 10:32:02
Hola Matias, con python3 puedes hacer algo así:

1
micursor.execute("CREATE DATABASE IF NOT EXISTS {}".format(variable))

https://pyformat.info
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
sin imagen de perfil
Val: 7
Ha disminuido su posición en 199 puestos en Python (en relación al último mes)
Gráfica de Python

Pasar variable en sentencia mysql

Publicado por Matias (4 intervenciones) el 25/06/2020 20:38:26
Desde ya gracias Joel.

Si lo hago en un entry utilizando lo que me dijiste puedo hacerlo sin problemas.

El tema es que se trata de un entry que está dentro de un button, cuando genero la base se guarda como PY_VAL4 y no con el nombre que le di

Dejo el segmento del código

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def crearbd():
        micursor = mibase.cursor()
        ordenn= """CREATE DATABASE IF NOT EXISTS {}""".format(nombredef)
        micursor.execute(ordenn)
 
 
nombrebd= StringVar()
nombredef= nombrebd.get()
 
def abrir():
    master= Tk()
    master.title("Ingrese el nombre de la BD: ")
    Label(master, text="Nombre:").grid(row=1, column=1, sticky=W, pady=25, padx=25)
    Entry(master, textvariable=nombrebd).grid(row=1, column=2, padx=25)
    Button(master, text="Crear", command=crearbd).grid(row=2, column=2, padx=10, pady=5)
    master.mainloop()
 
Button(root, text="Crear BD", command=abrir).grid(row=4, column=1, padx=20)
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
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Pasar variable en sentencia mysql

Publicado por joel (901 intervenciones) el 26/06/2020 08:28:45
Lo que tienes que hacer es pasar el parámetro a la función crearbd... algo así:

1
Button(master, text="Crear", command=lambda: crearbd(nombredef)).grid(row=2, column=2, padx=10, pady=5)

Y en la función, obtener dicha variable:
1
def crearbd(nombredef):
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
sin imagen de perfil
Val: 7
Ha disminuido su posición en 199 puestos en Python (en relación al último mes)
Gráfica de Python

Pasar variable en sentencia mysql

Publicado por Matias (4 intervenciones) el 26/06/2020 16:31:23
Perdoná que sea insistente pero sigue sin dejarme y estoy atorado hace días

Por las dudas paso el código completo en caso de que haya hecho algo mal

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
from tkinter import *
import random
import mysql.connector
 
root = Tk()
root.title("Tarea POO")
 
################################
 
Label(text="Ingrese sus datos", bg="aqua").grid(row=0, column=0, columnspan=4, sticky=W+E)
Label(root, text="Título").grid(row=1, column=1, sticky=W)
Label(root, text="Ruta").grid(row=2, column=1, sticky=W)
Label(root, text="Descripción").grid(row=3, column=1, sticky=W)
 
################################
 
titulo, ruta, descripcion = StringVar(), StringVar(), StringVar()
 
def entrada(valor,ancho,fila,columna):
    entrada = Entry(root, textvariable = valor , width = ancho)
    entrada.grid(row=fila,column=columna)
    return entrada
 
titulo = entrada(titulo,25,1,2)
ruta = entrada(ruta,25,2,2)
descripcion = entrada(descripcion,25,3,2)
 
 
 
colores = ["aqua", "yellow", "orange", "white", "pink", "black", "green"]
mibase = mysql.connector.connect(host="localhost", user="root", passwd="")
 
 
 
def color():
    root.configure(bg=random.choice(colores))
 
 
def insertar():
    pass
 
 
def crearbd(nombredef):
    micursor = mibase.cursor()
    ordenn= """CREATE DATABASE IF NOT EXISTS {}""".format(nombredef)
    micursor.execute(ordenn)
 
 
nombrebd= StringVar()
nombredef= nombrebd.get()
 
 
def abrir():
    master= Tk()
    master.title("Ingrese el nombre de la BD: ")
    Label(master, text="Nombre:").grid(row=1, column=1, sticky=W, pady=25, padx=25)
    Entry(master, textvariable=nombrebd).grid(row=1, column=2, padx=25)
    Button(master, text="Crear", command=lambda: crearbd(nombredef)).grid(row=2, column=2, padx=10, pady=5)
    master.mainloop()
 
Button(root, text="Crear BD", command=abrir).grid(row=4, column=1, padx=20)
Button(root, text="Alta", command=insertar).grid(row=4, column=2)
Button(root, text="Sorpresa", width=10, command=color).grid(row=4, column=3, padx=25, pady=5)
 
root.mainloop()
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
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Pasar variable en sentencia mysql

Publicado por joel (901 intervenciones) el 27/06/2020 12:09:55
Hola Matias, he probado el código, y en la linea 51, la variable nombrebd no tiene ningún valor!!!

Si ahí no tiene valor, envías una variable sin valor a la función crearbd().

No se si me he explicado...
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
sin imagen de perfil
Val: 7
Ha disminuido su posición en 199 puestos en Python (en relación al último mes)
Gráfica de Python

Pasar variable en sentencia mysql

Publicado por Matias (4 intervenciones) el 29/06/2020 14:59:45
Debería declararla? es el .get que obtengo del entry.

Cuándo la uso fuera del buttom me funciona normalmente.

Ahora logré que cree la base de datos, pero la crea con el nombre de py_val3.
No logro hacer que la cree con el nombre ingresado

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
nombrebd= StringVar()
 
def crearbd(tute):
    micursor = mibase.cursor()
    ordenn= """CREATE DATABASE IF NOT EXISTS {}""".format(tute)
    micursor.execute(ordenn)
 
 
def abrir():
    master= Tk()
    root.title("Ingrese el nombre de la BD: ")
    Label(master, text="Nombre:").grid(row=1, column=1, sticky=W, pady=25, padx=25)
    Entry(master, textvariable=nombrebd).grid(row=1, column=2, padx=25)
    Button(master, text="Crear", command=lambda: crearbd(nombrebd)).grid(row=2, column=2, padx=10, pady=5)
    return nombrebd
    master.mainloop()

Si agrego .get() en el lambda me tira error de sintaxis
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