Django For MSSQL

Posted 浮生记闲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django For MSSQL相关的知识,希望对你有一定的参考价值。

前面两部分为基础知识,详细描述Mssql的连接请看第三部分


使用的环境:
  • python 3.5.3

  • django 1.10

1.Anaconda

这一步可以省略,用原生的也挺好,因为安装theano比较方便,所以推荐用这个吧

(1) 下载Anaconda

去网上搜索一下anaconda,需要历史版本的就去历史文档里面找。https://www.anaconda.com/download/

(2) 执行安装

需要制定安装位置就改一下,不需要就一路Enter和yes就好了

(3) 基本命令

当你键入conda时就会出现各个选项的意思,以下是一些基本操作:

  • conda info -e #查看系统现有的环境

  • conda list #列出所有安装的package

  • conda innstall sth #这个和pip类似

  • sourcce activate root #切换环境,win环境下没有source

  • 还有其他的命令请参照官方文档,这里不做赘述


2.Django

(1) 安装Django

conda install django,pip instaall django,源码包都可以

推荐自强学堂的教程,写的很明白

http://code.ziqiangxuetang.com/django/django-tutorial.html

(3) Django基本流程赘述:

[1]新建一个项目

django-admin startproject project_name

-

[2]新建App

python manage.py startapp app_name

-

[3]注册App

  • APP新建完后,必须注册才能生效。编辑settings.py中的INSTALLED_APPS,增加新建的应用。(在最下面加上app的名字) 


-

[4]新建模板路径

  • 在安装目录下新建templates目录,专门存放网页文件

  • 修改settings.py中的TEMPLATES在DIRS中添加上刚才的路径,使django知道模板存放在哪

  • 在view中 用render方法返回一个网页 注意这个方法需要导入才可以使用 

[5]View中添加函数

  • 1.定义各种方法:eg 
    Django For MSSQL 
    -

  • 2.函数:eg 
    Django For MSSQL

-

[6]urls中定义连接

  • 1.定义方法,确定是从哪个view中调用函数:eg 
    Django For MSSQL 
    -

  • 2.确定路径,增加url:eg 
    Django For MSSQL 
    -

-

[7]页面编写与继承

  • 1.第一种 {{words}}:eg 
    Django For MSSQL 

    Django For MSSQL 

    Django For MSSQL 
    -

  • 2.第二种,网页中调用, 将调用的语句放到一个网页文件里:eg 

    Django For MSSQL 
    -

  • 3.第三种 继承替换已经存在的语句:eg 

     

     
    -

-

[8]开启服务

  • python manage.py runserver 0.0.0.0:8000

-

[9]其他操作

  • python manage.py makemigrations #创建更改的文件

  • python manage.py migrate #将生成的py文件应用到数据库


3.关于数据库

Django只内置了几个 Database Backend,默认并不支持 Microsoft SQL Server(MSSQL)。这是多么的苦逼啊….庆幸的是微软“大发慈悲”在2012年给 Redhat 提供了官方ODBC驱动,而Django的第三方库中有比较完善的ODBC支持,所以我们可以迂回实现。


言归正传,虽然苦逼,还是要搞一下的,于是乎,我们的任务开始了:列举两种方法,具体大同小异,看个人选择:

方法一:

[1] 安装pyodbc和django-pyodbc

  • pip install pyodbc django_pyodbc

  • 注意:提前安装好gcc gcc-c++等,pip升级

[2] 安装FreeTDS

  • pip或者源码安装均可.这个不安装会报错的!!!

  • 修改配置文件 

    vi /usr/local/freetds/etc/freetds.conf 
    [mssql] 
    host = 192.168.1.110 
    port = 1433 
    tds version = 7.0 
    client charset = UTF-8 

  • 进行测试 

    tsql -S mssql -U admin -P admin 
    locale is "en_US.UTF-8" 
    locale charset is "UTF-8" 
    using default charset "UTF-8" 
    1> use test 
    2> go 
    1> select * from lianxi 
    2> go 
    id paytime paynum 
    1 2 100 
    1> 

-

[3] 配置odbc

  • 主要有两个文件 odbc.ini 和 odbcinst.ini 

    -


    (1) 配置odbcinst.ini 


  • vim /etc/odbcinst.ini加入 
    [FreeTDS] 
    Description = ODBC of FreeTDS for MS-SQLServer 
    Driver = /usr/local/freetds/lib/libtdsodbc.so 
    FileUsage = 1 
    ## 
    ##确定好你的driver的位置,如果找不到查找一下安装freetds的


    (2) 配置odbc.ini 


    vim /etc/odbc.ini加入 
    [odbc连接名] 
    Driver = FreeTDS 
    ServerName = mssql(FreeTDS里配的连接名) 
    Database = test_db(数据库名) 

    -

    (3) 测试是否成功 

    isql -v odbc连接名 账号 密码 
    成功后会出现如下信息: 
    +---------------------------------------+ 
    | Connected! | 
    | | 
    | sql-statement | 
    | help [tablename] | 
    | quit | 
    | | 
    +---------------------------------------+ 
    SQL> 

-

[4] 配置Django文件

-

[5] 最后的检查

./manage.py shell 测试一下 


from django.db import connections 
cur = connections['default'].cursor() 
cur.execute("SELECT * FROM test") 
cur.fetchone() 
##如果正常说明配置结束,一切ok 


方法二:

[1] 安装MSSQL Server ODBC Driver

  • 如果你还是出现了报错情况,说不能安装的话,那可以试一下下面的情况: 

    wget https://packages.microsoft.com/config/rhel/7/prod.repo 
    yum update 
    yum remove unixODBC unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts 
    yum install msodbcsql-13.1.3.0-1 
    yum install unixODBC-devel #this step is optional but recommended* 

    -

  • 我们第一步就已经结束了

-

[2] 安装pyodbc和django-pyodbc

  • pip install pyodbc django_pyodbc

  • 安装完pyodbc我们就可以在python的shell下测试了驱动是否安装成功了。

  • 注意:提前安装好gcc gcc-c++等,pip升级

  • 可以用下面的方式测试一下是否安装成功 

    import pyodbc 
    connection = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER=127.0.0.1;DATABASE=test;UID=user;PWD=password') 
    curr = connection.cursor() 

-

[3] 配置Django文件


'test':{ 
'ENGINE':'django_pyodbc', 
'NAME':'test', 
'HOST':'127.0.0.1', 
'USER':'test', 
'PASSWORD':'password', 
'OPTIONS': { 
'driver': 'SQL Server Native Client 11.0', 
}, 

-

[4] 最后的检查

  • ./manage.py shell 测试一下 

    from django.db import connections 
    cur = connections['test'].cursor() 
    cur.execute("SELECT * FROM test") 
    cur.fetchone() 

    ##如果正常说明配置结束,一切ok


以上是关于Django For MSSQL的主要内容,如果未能解决你的问题,请参考以下文章

如何使用引导程序和 for 循环在 django 中创建电影片段?

sql MSSQL片段

将 Django 连接到 MSSQL Server 2012 时出错

方便调试使用的代码片段

Microsoft SQL Server 代码片段收集

如何在 Django Summernote 中显示编程片段的代码块?