深入浅出Django与MSSQL整合

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’的取值可能会有所不同。

数据库标签