基于现有MS SQL Server创建Django Web应用及调用存储过程问询
问题解答
1. 能否复用现有MS SQL Server数据库?
完全可以。Django原生虽不支持MS SQL Server,但借助第三方数据库后端包(如django-mssql-backend或django-pyodbc-azure),就能直接连接并使用现有MS SQL Server数据库,无需新建库。只需在Django项目的settings.py中配置正确的连接参数即可:
DATABASES = { 'default': { 'ENGINE': 'sql_server.pyodbc', # django-mssql-backend对应的引擎 'NAME': '你的现有数据库名', 'USER': '数据库用户名', 'PASSWORD': '数据库密码', 'HOST': '数据库服务器地址', 'PORT': '1433', 'OPTIONS': { 'driver': 'ODBC Driver 17 for SQL Server', }, } }
2. 使用第三方MS SQL包时的核心操作支持
针对你提到的需求,django-mssql-backend均能满足:
触发存储过程
可通过Django数据库连接游标直接调用存储过程,示例如下:
from django.db import connection def call_stored_procedure(): with connection.cursor() as cursor: # 调用带参数的存储过程 cursor.execute("EXEC 你的存储过程名 @参数1 = %s, @参数2 = %s", ('值1', '值2')) # 若存储过程有返回结果,可直接获取 results = cursor.fetchall() return results
执行自定义SQL命令
无论是INSERT、UPDATE、DELETE这类写操作,还是复杂自定义查询,都能通过游标执行原生SQL:
from django.db import connection def execute_custom_sql(): with connection.cursor() as cursor: # 执行更新操作 cursor.execute("UPDATE 表名 SET 字段名 = %s WHERE 条件 = %s", ('新值', '条件值')) # 按需提交事务 connection.commit()
通过SELECT语句获取数据
除Django ORM查询外,也可直接用原生SELECT语句获取数据:
from django.db import connection def fetch_data_with_select(): with connection.cursor() as cursor: cursor.execute("SELECT 字段1, 字段2 FROM 表名 WHERE 条件 = %s", ('条件值',)) # 获取所有结果 rows = cursor.fetchall() # 可选:转换为字典格式方便使用 columns = [col[0] for col in cursor.description] results = [dict(zip(columns, row)) for row in rows] return results
内容的提问来源于stack exchange,提问作者Akshit Chauhan
相关产品推荐
相关产品推荐

