Ubuntu下Django连接SQL Server数据库
2017-09-07
Django  /  /  / 已有107人围观

    最近由于工作需要,要在 Django 项目中连接 SQLServer 数据库,之前没在 Ubuntu 中使用过 SQLServer,在网上找了一些文章,踩着坑把配置搞好了,写篇文章总结下。


一、Ubuntu环境依赖


    首先为了能在 Ubuntu 中访问 SQLServer,需要首先安装FreeTDS,同时还有unixodbc,tdsodbc等,具体命令如下:

sudo apt-get install unixodbc unixodbc-dev freetds-dev tdsodbc

    为了检测是否安装成功,你可以安装 freetds-bin 来测试一下数据库连接:

sudo apt-get install freetds-bin

    然后,在命令行输入:

tsql -H 192.168.0.203 -p 1433 -U admin -P 123456

    如果能正常进入命令行,就说明安装成功了。


二、修改FreeTDS & odbc配置


    上述安装完成之后,我们需要修改相关的配置,首先是 FreeTDS 配置:

# sudo vim /etc/freetds/freetds.conf 添加内容

[sqlserver]
    host = 192.168.0.203
    port = 1433
    tds version = 8.0

    然后是 odbc 的配置:

# sudo vim /etc/odbc.ini  添加内容

[sqlserverdatasource]
Driver = FreeTDS
Description = ODBC connection via FreeTDS
Servername = sqlserver
Database = test
TDS_Version = 8.0
# sudo vim /etc/odbcinst.ini  添加内容

[ODBC]
Trace = Yes
TraceFile = /tmp/odbc.log

[FreeTDS]
Description = TDS driver (Sybase/MS SQL)
# 这里的路径有时候可能在/usr/lib/odbc/libtdsodbc.so
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
# 这里的路径有时候可能在/usr/lib/odbc/libtdsS.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
CPTimeout =
CPReuse =
FileUsage = 1


三、Django配置


    安装 Python 依赖 pyodbc:

sudo pip3 install pyodbc
# python 2.x版本使用 sudo pip install pyodbc

    安装之后,写个简单的例子测试是否可以连接成功:

import pyodbc
db = pyodbc.connect('DRIVER={FreeTDS};SERVER=192.168.0.203,1433;DATABASE=test;UID=admin;PWD=123456;TDS_Version=8.0')
cursor = db.cursor()
cursor.execute("SELECT @@version;")
row = cursor.fetchone()
while row:
    print(row[0])
    row = cursor.fetchone()

    如果正常输出 SQLServer 的版本信息,说明安装成功。


    所有的依赖安装完成之后,我们在 Django 中使用 SQLServer,本文代码基于 Python 3.5 和 Django 1.11实现。首先我们要安装 django 的 SQLServer backend:

sudo pip install django-pyodbc-azure

    之后在 Django settings 中配置数据库:

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',  # 必须这样写
        'NAME': 'test',  # 数据库名
        'USER': 'admin',  # 用户名
        'PASSWORD': '123456',  # 密码
        'HOST': 'sqlserver',  # 要和上面的FreeTDS配置保持一致
        'PORT': '1433',
        'OPTIONS': {
            'driver': 'FreeTDS',
        },
    }
}

    最后我们测试下 Django 中是否连接成功,首先进入django shell:

python manage.py shell

    然后运行代码:

>>> from django.db import connections
>>> from django.db.utils import OperationalError
>>> db_conn = connections['default']
>>> try:
...     c = db_conn.cursor()
... except OperationalError:
...     connected = False
... else:
...     connected = True
... 
>>> connected
True

    连接成功!


Over!

本文地址:http://xianglong.me/article/django-connect-sql-server-database-in-ubuntu/

特别声明:本站文章,如非注明,皆为降龙原创。转载需注明本文链接并保证链接可用。