正在使用 python 执行 Mysql 存储过程

Executing Mysql stored procedure using python

我有一个存储过程语句在 python 中使用 mysql 游标时不会执行,但它会在任何其他 Mysql 查询工具上执行,例如 workbench 或导航器。我已成功连接到我的数据库,其中包含一个名为 users 的 table。

    import mysql.connector
    from mysql.connector import Error

    mydb = mysql.connector.connect(
    host="localhost",
    user="root",
    password="root",
    charset='utf8',
    database="story_db"
           )

    mycursor = mydb.cursor()
    query="DELIMITER $$ CREATE PROCEDURE GetAllUsers() BEGIN    SELECT *  FROM users; END $$        
    DELIMITER ;"
    try:
      mycursor.execute(query)
      print("success")
    except Error as err:
      print(err)

结果我得到这个错误:

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 $$ CREATE PROCEDURE GetAllUsers() BEGIN  SELECT *  FROM users' at line 1

DELIMITER 是 command-line 客户的命令,而不是 SQL 声明。不要在 SQL 代码中使用它。

在您的特定情况下,存储过程包含一个 SQL-statement,因此它可以在没有 BEGIN-END 块的情况下创建,使用单个语句,并且即使在 CLI 中也不需要在 DELIMITER 中重新分配。 IE。简直

CREATE PROCEDURE GetAllUsers() 
SELECT *  FROM users;