Python py mysql: нельзя запускать несколько операторов - PullRequest
0 голосов
/ 29 мая 2020

Я работаю над проектом, который должен прочитать файл input. sql и создать в нем все команды. Он работал нормально для всех других операторов, но для процедур не работает.

Вы можете попробовать воспроизвести это самостоятельно, используя эти входные данные.

CREATE TABLE IF NOT EXISTS products( 
Prod_id INT AUTO_INCREMENT PRIMARY KEY, 
Name VARCHAR(255) NOT NULL, 
Price INT NOT NULL, 
 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);

Insert into products(Name,Price) Values('soap',1);
Insert into products(Name,Price) Values('toilet paper',2);
Insert into products(Name,Price) Values('Choco taco',3);

CREATE PROCEDURE GetAllProducts() 
BEGIN     
SELECT * FROM products; 
END;

Но пока я выполняю процедуру создания и оператора вызова, я не могу этого сделать. Может ли кто-нибудь помочь мне?

несколько утверждений, как показано ниже, но он не работает

с connection.cursor () в качестве курсора:

    for statement in script.split(';'): 

        if len(statement) > 0:

            cursor.execute(statement + ';')

Я понимаю, что проблема в: delimiter, но как я могу убедиться, что вся процедура выполняется?

Курсор py mysql, кажется, выполняет одну инструкцию за раз и не допускает многократного выполнения .?

1 Ответ

0 голосов
/ 29 мая 2020

Поскольку вы разделяете на ;, процедура выполняется как два отдельных оператора:

BEGIN
SELECT * FROM products;

и

END;

, которые оба недопустимы SQL.

...