2019独角兽企业重金招聘Python工程师标准>>>

前言:

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

注:另有《Django连接使用SQL Server数据库(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步骤:

1、安装必要django环境

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

2、数据库驱动程序检查

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

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

3、Django 的 setting 中配置数据库连接信息

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

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

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,}}
}

4、Django models表建立

注:

  1. 因为Django models 使用 python manage.py makemigrations APPpython manage.py migrate 生成数据表时表名会自动加上APP的前缀。而如果现在连接的数据库已经有部分数据需要读取就不得不在 models 的class 中添加 Meta 参数指定数据库名称了。
  2. 如果数据库中已有数据表,字段信息要尽可能和数据库中字段参数保持一致

附:

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

        如果你从来没有连接创建成功过,建立先用models 创建生成一个简单的表进行测试

from django.db import modelsclass 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

5、附言

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

在很多时候连接不成功你可以利用 python manage.py makemigrations APP 和 python manage.py migrate 来验证下错误信息,如果数据库中已有该名称表的数据 仅仅会提示 数据库中已存在该对象 。当提示该信息时候大部分情况下你可以正常的 python manage.py runserver 启动服务和读取SQL Server和使用数据库中的信息了。

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

转载于:https://my.oschina.net/zhaojunhui/blog/2980652

Django连接使用SQL Server数据库(windows版)相关推荐

  1. JDBC连接SQL Server数据库[windows验证模式连接+SQL server验证]

    JDBC连接SQL Server数据库[windows验证模式连接+SQL server验证] 都说用JDBC连接数据库会出现很多问题,现总结.汇总一下. 前提是已经正确安装了SQL Server系列 ...

  2. 1433端口无法连接(sql server 数据库无法访问问题)解决思路

    1433端口无法连接(sql server 数据库无法访问问题)解决思路 参考文章: (1)1433端口无法连接(sql server 数据库无法访问问题)解决思路 (2)https://www.cn ...

  3. 使用ODBC连接Microsoft SQL server数据库

    因为最近要用C对SQL Server进行连接,但发现网上关于这方面的资料不多,就把这两天查到的资料和心得归拢了下,留着以后自己看. 使用C语言通过ODBC(开放式数据库互连)对SQL Server进行 ...

  4. java sqlserver2014_java连接2014 sql server数据库应该用什么驱动

    展开全部 <1> 将JDBC解压缩到62616964757a686964616fe58685e5aeb931333363373665任意位置,比如解压到C盘program files下面, ...

  5. linux连接远程sql数据库服务器,Linux 远程连接 Microsoft SQL Server 数据库

    示例一################################################### 一, 安装 unixODBC 下载安装包. 在 RedHat 安装光盘上就有 unixOD ...

  6. azure mysql sql,UiPath连接Azure Sql Server数据库

    一.创建数据库 在Azure中创建SQL数据库 image 更改防火墙设置,并设置客户端IP访问规则 image 二.安装数据源驱动 在本地安装数据源驱动程序,保证可以正常接入到远程的数据库. 如果不 ...

  7. 条码打印软件如何连接SQL Server数据库制作条形码

    有的小伙伴用条码打印软件制作条形码时,条形码数据没有保存在TXT或者Excel表中,而是保存在数据库中,那就无法选择TXT或者Excel数据源导入条形码数据了,这样的话,在条码打印软件可以选择连接相应 ...

  8. 数据库应用程序开发基础篇—— .NET中SQL Server数据库的操作C#篇之一

    数据库应用程序开发基础篇-- .NET中SQL Server数据库的操作C#篇之一 写在前面:前面介绍了数据库系统的基本概念,SQl语句基本使用方法,接下来通过学习具体语言和具体数据库结合的应用开发来 ...

  9. SQL Server 数据库镜像

    文章目录 故障转移群集技术 vs 日志传送技术 数据库镜像 vs 故障转移群集技术 数据库镜像 vs 日志传送技术 数据库镜像的设计目的 2.4.1 数据库镜像的基本概念 基本术语和角色 镜像数据库的 ...

最新文章

  1. 详解Silverlight Treeview的HierarchicalDataTemplate使用
  2. c++ opencv mat 最大值,数据类型
  3. 机器之心 Synced 08月12日 20:59
  4. debian编译mysql_MySQL数据库之Debian 6.02下编译安装 MySQL 5.5的方法
  5. 并发模型之——基本概念
  6. Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图的数据操作
  7. hdu 2579 BFS
  8. 2560介绍_炒股高手收益翻10倍,只因妙用这一招2560战法,看了都不亏了
  9. php mysql mvc_超简洁PHPMVC
  10. MyBatis学习总结(4)——解决字段名与实体类属性名不相同的冲突
  11. java equals重写原则_如何正确的重写equals方法(避免各种陷阱)
  12. php安装libpng,求助:libpng编译问题
  13. 怎么样利用栅格数据分类后的结果以行政区域统计各个地类的面积
  14. mis系统的编写与设计
  15. 多力食用油:技术赋能产品品质,健康深植品牌理念
  16. android wear刷机,1分钟搞定刷机 百度DuWear手表系统公测版上线
  17. OPENCV入门教程十一:dilate图像膨胀
  18. 彻底清除朋友圈内的推荐广告
  19. HWND与HANDLE的区别
  20. 平安科技:人工智能推动行业发展和变革

热门文章

  1. 基于功能连接的认知机器学习预测模型:特征权重可靠吗?
  2. iis7 php 5.4,laravel 5.4如何在iis 7环境中安装
  3. 【有序充电】基于粒子群算法实现电动汽车充电动态优化策略附matlab代码
  4. java mysql sql注入_Java防SQL注入MySQL数据查询
  5. i18n如何在js文件中生效
  6. java性别_java中的性别字段
  7. 《Building Services Engineering Research Technology》期刊介绍(SCI 4区)
  8. 微信小程序 wepy 框架 手势密码 ios 安卓 真正的无卡顿
  9. 流水线Imputer的使用对pima数据进行处理
  10. 名词解释---Bitrate/比特率