django - 直接执行自定义SQL不起作用但没有报错
问题描述
我有一个函数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])
问题是当函数运行不显示错误并且在调试模式下返回"POST /something/20/ HTTP/1.1" 200
但在数据库中未保存数据时。我使用 django 1.8.19、django-pyodbc-azure 1.8.17 并且数据库在 sql server 2016 上。非常感谢任何帮助。
解决方案
如果您使用 Django 进行连接,如下所示:
from django.db import connection
cursor = connection.cursor()
然后通常,自动提交应该是打开的。但值得测试:在你的两个cursor.execute()
语句之后,你可以放一个cursor.close()
andprint("CURSOR CLOSED!")
吗?
然后查看数据是否已插入,是否print()
在runserver
.
如果autocommit
没有打开,您可以在您的DATABASES
选项中激活它。它在django-pyodbc-azure
此处作为一个选项记录在案:
https://pypi.org/project/django-pyodbc-azure/
祝你好运!
推荐阅读
- python - 从命令行参数错误读取文件
- php - 与没有模型 laravel 的资源控制器的多对多关系
- python - 从弹性搜索supervisord文件中获取端口
- kubernetes - 在 kubectl 配置中设置用户凭据时出错
- c++ - 如何访问一组地图的元素?C++
- export - 使用 Clang/LLC/WASM-LD 将 C 编译为 WASM 时,如何直接导出整数常量?
- android - TextInputLayout - boxBackgroundColor 样式属性在 Android 中不起作用
- php - Laravel Eloquent select in with empty
- arrays - 用 F:F 使用范围结束的空单元格替换 0 的公式
- node.js - 尝试在 docker 中运行全局安装的 npm 模块时出现未找到错误