1
I have some files .sql where I keep a procedure
in each file.
- An example,
procedure1.sql
:
DELIMITER $$
DROP PROCEDURE IF EXISTS sp_teste$$
CREATE DEFINER=`db`@`%` PROCEDURE sp_teste ()
BEGIN
UPDATE tb_empresas SET emp_descricao = `TESTE` WHERE emp_codigo = 1;
END$$
DELIMITER ;
Now I would like to create a Python program that reads each of these files .sql and create the procedure
, if it does not exist.
The program can currently open and read each file, without problems, but when I give the command cursor.execute(data)
, get the bug:
1064 (42000): You have an error in your SQL syntax; check the manual that Corresponds to your Mysql server version for the right syntax to use near 'DELIMITER $$$ USE python_mysql$$ DROP PROCEDURE IF EXISTS sp_test$$ CREATE DE' at line 1.
I’m not using the function callproc
, 'cause I don’t want to call "execute" to procedure
, only raise it if it doesn’t exist.
Any hint?
Here is the code I’m using: (The procedures are in a folder called 'scripts', at the root where the python code is.
from tkinter import *
import os
#import MySQLdb
from mysql.connector import MySQLConnection, Error
window = Tk()
window.title("Instalador de Scripts")
window.geometry('350x200')
# Linha 1
lbl1 = Label(window, text="Servidor")
lbl1.grid(column=0, row=0)
txt1 = Entry(window,width=20)
txt1.grid(column=1, row=0)
# Linha 2
lbl2 = Label(window, text="Porta")
lbl2.grid(column=0, row=1)
txt2 = Entry(window,width=20)
txt2.grid(column=1, row=1)
txt2.insert(END, '3306')
# Linha 3
lbl3 = Label(window, text="Usuario")
lbl3.grid(column=0, row=2)
txt3 = Entry(window,width=20)
txt3.grid(column=1, row=2)
# Linha 4
lbl4 = Label(window, text="Senha")
lbl4.grid(column=0, row=3)
txt4 = Entry(window,width=20)
txt4.grid(column=1, row=3)
# Linha 5
lbl5 = Label(window, text="Banco")
lbl5.grid(column=0, row=4)
txt5 = Entry(window,width=20)
txt5.grid(column=1, row=4)
txt5.insert(END, 'conference')
def verifica():
contador = 6
for root, dirs, files in os.walk("./scripts"):
for filename in files:
txt = Entry(window,width=20)
txt.grid(column=1, row=contador)
txt.insert(END, filename)
contador = contador+1
print(filename)
def roda():
contador = 6
for root, dirs, files in os.walk("./scripts"):
for filename in files:
print(filename)
filename = "./scripts/" + filename
with open(filename, 'r') as file:
data = file.read()
print("Dados: " + str(data) + " FIM dos dados**********")
con = MySQLConnection(
host="X",
user="Y",
passwd="Z",
database='W'
)
print(con)
#con.select_db('conference_teste')
cursor = con.cursor()
try:
cursor.execute(data)
except Exception as e:
print("Nao rolou o execute: " + str(e))
btn_verifica = Button(window, text="Verifica", command=verifica)
btn_verifica.grid(column=2, row=5)
btn_roda = Button(window, text="Roda", command=roda)
btn_roda.grid(column=3, row=5)
window.mainloop()
Opa Vinicius, enter your code so far to make it easier to help you.
– André Lins
Tuned @Andrélins! Thanks for the feedback!
– Vinicius Bussola