我正在尝试从django执行以下非常简单的存储过程。我实际上将运行一个更复杂的,但我正在使用这个作为测试来运行它。如果我直接从mysql执行它,SP会起作用,但是当我尝试从django执行它时,它什么都不做。没有错误,没有。起初我想也许它的权限,但网站可以读取和写入数据库罚款。我尝试在django中将其作为原始sql执行,也没有任何反应。我试图在SP中引入语法错误,看它是否连接。它检测语法错误,因此django连接到SP。但它根本不会执行。这是django代码:
def priceupdate(request, store_id):
cur = connection.cursor()
try:
cur.callproc('liquorDB.Test_scheduler')
finally:
cur.close()
return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
这是存储过程:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `Test_scheduler`()
BEGIN
update liquorDB.store_store set Address = '45 Test' where StoreID = 1;
END
答案 0 :(得分:1)
对于那些也在寻找这个答案的人,我已经明白了。您在Google中找到的存储过程代码基于检索未修改数据的数据。我的存储过程旨在修改。我找到了我的答案,查看原始SQL查询的django文档。 https://docs.djangoproject.com/en/1.5/topics/db/sql/它声明如果你想让你的sql修改数据库上的东西,你必须添加一个transaction.commit,如下所示:
cur.callproc('liquorDB.Test_scheduler')
transaction.commit_unless_managed()