正在使用 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;
我有一个存储过程语句在 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;