Django链接使用SQL Server数据库(windows版)

前言:python

        众所周知,Django 默认支持sqlite,mysql,oracle,postgresql数据库,不支持SQL Server数据库。但实际生产环境中SQL Server数据库用的仍是比较多的。咱们这里用ODBC驱动链接SQL Server数据库,进行维护开发。假如你也须要,恭喜你不用再漫天乱扒帖子了。我会尽量的详细说Django创建和SQL Server数据库的链接方法和存读已经存在数据的SQL Server数据。mysql

注:另有《Django链接使用SQL Server数据库(linux版)》,请自行在本人博文中查找linux

本人示例环境:

  • 系统版本:Windows2012
  • 数据库版本:SQL Server2012
  • python版本:Python 3.6.3
  • Django版本:Django2.1
  • 链接数据库工具:Navicat Premium

 

Django链接SQL Server前提:

  1. 【服务器属性--安全性】 开启SQL Server 和 Windows 身份验证模式
  2. 【服务器属性--链接】 开启容许远程链接到此服务器
  3. 创建远程帐户能正常远程访问和基本的增删改查权限,第一次测试建议用sa等较高权限,等熟悉了下降用户权限
  4. 在服务器上安装Navicat Premium软件【请自行搜索和安装】,目的是用ODBC驱动链接SQL Server

 

Django链接SQL Server步骤:

 

一、安装必要django环境

pip install django-crontab django-mssql django-pyodbc django-pyodbc-azure django-pytds django-sqlserver

二、数据库驱动程序检查

  • 通常第三方链接数据库应用程序都自带的有,这里使用 Navicat Premium 示例,软件安装略
  • 驱动查看路径默认为 C:\Windows\SysWOW64\odbcad32.exe
  • 打开ODBC数据源管理程序,能够看到全部安装的ODBC驱动,找到Navicat Client的名称,用于填写到Django的setting中做为指定的默认驱动

 

安装 Navicat Premium 后去对应目录查看是否有ODBC驱动sql

 

 

三、Django 的 setting 中配置数据库链接信息

 

须要注意的是 OPTIONS默认数据库链接驱动设置的驱动要和上图ODBC中驱动保持一致!数据库

不少人使用mysql多了 端口很容易写成3306,SQL Server端口默认1433django

DATABASES = {
  'default': {
    'ENGINE': 'sql_server.pyodbc',			        # odbc链接固定写法
    'NAME': 'MySQLserver',				            # 自定义数据库链接名
    'USER': 'sa',					                # 数据库链接帐户
    'PASSWORD': '123456!@#',				        # 数据库链接密码
    'HOST': '127.0.0.1',				            # 数据库服务地址
    'PORT': '1433',					                # 数据库链接端口
    'OPTIONS':{
        'driver':'SQL Server Native Client 11.0',	# ODBC链接应用驱动
        'MARS_Connection': True,
    }
  }
}

 

四、Django models表创建

 

注:安全

  1. 由于Django models 使用 python manage.py makemigrations APP python manage.py migrate 生成数据表时表名会自动加上APP的前缀。而若是如今链接的数据库已经有部分数据须要读取就不得不在 models 的class 中添加 Meta 参数指定数据库名称了。
  2. 若是数据库中已有数据表,字段信息要尽量和数据库中字段参数保持一致

附:服务器

        使用 python manage.py inspectdb > models.py 命令能够反向建立和导出数据库表,但自动建立和导出的表可能会有必定的错误和不完整。建议根据自身状况酌情使用。oracle

        若是你历来没有链接建立成功过,创建先用models 建立生成一个简单的表进行测试工具

from django.db import models

class TEST(models.Model):
    ID = models.IntegerField(primary_key=True,)
    NAME = models.CharField(max_length=255,)

    class Meta:						# 若是读取已有数据的必要参数!
        db_table = "Test_Table"

    def __str__(self):
        return self.NAME

五、附言

        其它地方就和Django普通使用方式是同样的了~ 链接SQL Server 数据库时候,要想访问某个表中的某个数据,models.py 中确定是要声明和指定表名的

        在不少时候链接不成功你能够利用 python manage.py makemigrations APPpython manage.py migrate 来验证下错误信息,若是数据库中已有该名称表的数据 仅仅会提示 数据库中已存在该对象 。当提示该信息时候大部分状况下你能够正常的 python manage.py runserver 启动服务和读取SQL Server和使用数据库中的信息了。

        多看看错误信息冷静的思考问题,你会找到答案的。

相关文章
相关标签/搜索