1. 简介
Django是一个基于MVC模式的Web框架,支持多种数据库,本文主要介绍Django和Microsoft SQL Server (MSSQL)的结合使用。Microsoft SQL Server是一个关系数据库管理系统(RDBMS),常用于大型企业级应用程序中。
2. Django与MSSQL整合
2.1 安装MSSQL驱动程序
在Django中使用MSSQL需要先安装相关的Python驱动程序。目前支持的MSSQL Python驱动程序有两个:pyodbc和django-pyodbc-azure。pyodbc是一个通用的ODBC数据库连接库,而django-pyodbc-azure是专门为Azure SQL Server打造的Django驱动。本文将使用django-pyodbc-azure作为示例。
首先通过pip安装django-pyodbc-azure:
pip install django-pyodbc-azure
2.2 配置Django
在Django的settings.py文件中添加以下配置:
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'database_name',
'USER': 'username',
'PASSWORD': 'password',
'HOST': 'server_name',
'PORT': '',
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
},
},
}
说明:
‘ENGINE’指定了使用MSSQL的Python驱动程序。
‘NAME’是数据库的名称。
‘USER’和‘PASSWORD’是登录数据库所需的用户名和密码。
‘HOST’是数据库服务器的名称或IP地址(例如:localhost)。
‘PORT’是数据库服务器的端口号,如果使用默认值则可以留空。
‘OPTIONS’是额外的配置参数,这里指定了ODBC驱动程序为‘ODBC Driver 17 for SQL Server’。
2.3 创建数据表
在配置好Django后,就可以使用Django自带的ORM(Object-Relational Mapping)模块进行数据库的操作了。首先需要在models.py中定义数据表模型,例如:
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
publisher = models.CharField(max_length=100)
pub_date = models.DateField()
然后在命令行中运行以下命令:
python manage.py makemigrations
python manage.py migrate
说明:
第一条命令会在migrations目录下生成一个新的迁移文件。
第二条命令将迁移文件所描述的数据库变更应用到数据库。
3. Django与MSSQL整合的实例
3.1 创建MSSQL数据库
首先需要在MSSQL中创建一个新的数据库。可以使用SQL Server Management Studio或者SQL Server命令行工具创建。以下是使用命令行创建数据库的例子:
CREATE DATABASE django_mssql_test;
3.2 配置Django
在settings.py中添加以下配置:
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'django_mssql_test',
'USER': 'sa',
'PASSWORD': 'Password1',
'HOST': 'localhost',
'PORT': '',
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
},
},
}
3.3 创建数据表
在models.py中创建一个Book类,然后运行以下命令:
python manage.py makemigrations
python manage.py migrate
3.4 向数据表中添加数据
可以通过Django的管理后台添加数据。首先需要创建一个管理员账号:
python manage.py createsuperuser
然后启动Django服务,在浏览器中访问/admin页面登录管理员账号,在‘Books’菜单下添加一些数据。
3.5 在视图函数中读取数据
在views.py中添加以下代码来读取数据:
from django.shortcuts import render
from .models import Book
def book_list(request):
books = Book.objects.all()
return render(request, 'book_list.html', {'books': books})
该函数获取了数据库中所有的数据,然后传递到book_list.html模板文件中进行展示。
3.6 定义模板文件
在templates目录下创建book_list.html文件,代码如下:
<!DOCTYPE html>
<html>
<head>
<title>Book List</title>
</head>
<body>
<h1>Book List</h1>
<table>
<tr>
<th>Title</th>
<th>Author</th>
<th>Publisher</th>
<th>Publication Date</th>
</tr>
{% for book in books %}
<tr>
<td>{{ book.title }}</td>
<td>{{ book.author }}</td>
<td>{{ book.publisher }}</td>
<td>{{ book.pub_date }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
该模板文件通过for循环遍历了books对象,逐条取出数据并展示在表格中。
3.7 运行Django项目
在命令行中运行以下命令启动Django服务:
python manage.py runserver
然后在浏览器中访问http://localhost:8000/book_list/,可以看到添加的所有数据展示在页面中。
4. 总结
本文介绍了如何在Django中整合Microsoft SQL Server数据库,并通过一个简单的实例演示了如何使用Django操作MSSQL数据库。这种结合方式对于需要使用MSSQL数据库的Django开发者来说非常实用。需要注意的是,在使用不同版本的ODBC驱动程序时,配置参数‘driver’的取值可能会有所不同。