直接执行 custom SQL 不起作用但没有显示错误

Executing custom SQL directly does not work but shows no error

我的 views.py 中有一个函数可以直接在数据库中执行 sql 查询,就像这样

cursor.execute("INSERT INTO table1(field1,field2,field3) VALUES(%s,%s,%s)",[value1,value2,value3])
cursor.execute("UPDATE table1 SET field1=%s,field2=%s,field3=%s WHERE field4=%s",[value1,value2,value3,value4])

问题是当函数 运行 没有显示错误并且在调试模式下 returns "POST /something/20/ HTTP/1.1" 200 但是在数据库中数据没有保存。我使用 django 1.8.19,django-pyodbc-azure 1.8.17,数据库在 sql 服务器 2016 上。非常感谢任何帮助。

如果您使用 Django 进行这样的连接:

from django.db import connection
cursor = connection.cursor()

那么正常情况下,auto-commit应该是开着的。但值得测试:在你的两个 cursor.execute() 语句之后,你可以放一个 cursor.close()print("CURSOR CLOSED!")?

然后看看有没有插入数据,如果在你的runserver.

中得到了print()语句

如果 autocommit 没有打开,您可以在 DATABASES 选项中激活它。它在 django-pyodbc-azure 中记录为此处的一个选项:

https://pypi.org/project/django-pyodbc-azure/

祝你好运!