django mysql:存储过程不会执行

时间:2013-11-10 06:19:00

标签: mysql django stored-procedures

我正在尝试从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

1 个答案:

答案 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()