Django2.1鏈接使用SQL Server(linux版)

聲明

本人示例環境:python

  • 系統版本:centos7.1 64位
  • 數據庫版本:SQL Server2012
  • python版本:Python 3.6.3
  • Django版本:Django2.1
  • 鏈接數據庫工具:pyodbc,Microsoft ODBC Driver

以前已經寫過一篇《python3鏈接使用SQL Server數據庫(linux版)》,但發現Django進行鏈接時仍是比較繁瑣和頭疼的,因此如今寫個專門針對 linux + Django + SQL Server 組合的文章,在這裏並無使用freetds驅動開源工具,而是使用了和Windows同樣的Microsoft ODBC Driver 11 for linux版,微軟專門爲linux用戶開發支持的SQL server 驅動linux

Microsoft ODBC Driver 11 for linux 下載地址[linux6和linux7通用,實測centos7可用]c++

wget http://download.microsoft.com/download/6/A/B/6AB27E13-46AE-4CE9-AFFD-406367CADC1D/Linux6/sqlncli-11.0.1790.0.tar.gz

若是你須要更高版本的驅動程序請轉到官網下載,附官網地址(建議舊版安裝成功後再選擇性升級)sql

https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2017

ODBC驅動安裝

用於數據庫鏈接的驅動數據庫

yum -y install unixODBC*

安裝微軟ODBC for linux驅動

解壓並驗證安裝條件

tar xvf sqlncli-11.0.1790.0.tar.gz
cd sqlncli-11.0.1790.0
./install.sh verify

如下爲驗證信息django

Microsoft SQL Server ODBC Driver V1.0 for Linux Installation Script
Copyright Microsoft Corp.
Starting install for Microsoft SQL Server ODBC Driver V1.0 for Linux
Checking for 64 bit Linux compatible OS ..................................... OK
Checking required libs are installed ........................................ OK
unixODBC utilities (odbc_config and odbcinst) installed ..................... OK
unixODBC Driver Manager version 2.3.0 installed ......................... FAILED
unixODBC Driver Manager configuration correct ...................... NOT CHECKED
Microsoft SQL Server ODBC Driver V1.0 for Linux already installed .. NOT CHECKED
See /tmp/sqlncli.10874.17476.965/install.log for more information about installation failures.

查看依賴包

[root@localhost sqlncli-11.0.1790.0]# ldd lib64/libsqlncli*
	linux-vdso.so.1 =>  (0x00007fff973fe000)
	libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007f2deb899000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007f2deb695000)
	librt.so.1 => /lib64/librt.so.1 (0x00007f2deb48c000)
	libssl.so.10 => /lib64/libssl.so.10 (0x00007f2deb21a000)
	libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f2deb015000)
	libodbcinst.so.1 => /lib64/libodbcinst.so.1 (0x00007f2deae02000)
	libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f2deab1a000)
	libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007f2dea8cd000)
	libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f2dea5c4000)
	libm.so.6 => /lib64/libm.so.6 (0x00007f2dea2c2000)
	libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f2dea0ac000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f2de9e8f000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f2de9acc000)
	libz.so.1 => /lib64/libz.so.1 (0x00007f2de98b6000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f2dec053000)
	libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f2de96b1000)
	libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f2de947e000)
	libltdl.so.7 => /lib64/libltdl.so.7 (0x00007f2de9274000)
	libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f2de9065000)
	libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f2de8e61000)
	libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f2de8c47000)
	libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f2de8a1f000)
	libpcre.so.1 => /usr/local/lib/libpcre.so.1 (0x00007f2de8802000)

==若是遇到沒有找到的依賴環境組件,不用擔憂,依賴組件是向下兼容的,在這裏我作個示例:==vim

若是你看到centos

libodbcinst.so.1 => not found

能夠創建個此缺乏環境組件名稱的軟鏈接並指向此環境組件的高版本,如:api

cd /usr/lib64
ln -s libodbcinst.so.2.0.0 libodbcinst.so.1

完成後可使用ldd再次驗證,確認所有可行後再進行下一步工具

ldd lib64/libsqlncli*

正式安裝

使用install安裝命令進行安裝

./install.sh install --force

聲明文件敲空格輸入YES安裝

Enter YES to accept the license or anything else to terminate the installation: YES

Checking for 64 bit Linux compatible OS ..................................... OK
Checking required libs are installed ........................................ OK
unixODBC utilities (odbc_config and odbcinst) installed ..................... OK
unixODBC Driver Manager version 2.3.0 installed ......................... FAILED
unixODBC Driver Manager configuration correct ...................... NOT CHECKED
Microsoft SQL Server ODBC Driver V1.0 for Linux already installed .. NOT CHECKED
Microsoft SQL Server ODBC Driver V1.0 for Linux files copied ................ OK
Symbolic links for bcp and sqlcmd created ................................... OK
Microsoft SQL Server ODBC Driver V1.0 for Linux registered ........... INSTALLED

Install log created at /tmp/sqlncli.2486.13833.4245/install.log.

One or more steps may have an *. See README for more information regarding
these steps.

登陸數據庫測試,當現實>1字符樣式的時候就表示登陸成功,驅動安裝完成

sqlcmd -S 192.168.88.81 -U sa -P '123456'
>1

配置unixOBDC

vim /etc/odbcinst.ini

[SQL Server Native Client 11.0]
Description=Microsoft SQL Server ODBC Driver V1.0 for Linux
Driver=/opt/microsoft/sqlncli/lib64/libsqlncli-11.0.so.1790.0
Threading=1
UsageCount=1

數據庫鏈接測試

[root@localhost lib64]# isql -v Mydata sa '123456'
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

至此能夠linux和python3能夠正常鏈接和使用SQL Server了,但若是使用Django鏈接還須要作一下操做

django 鏈接組件

django-pyodbc-azure組件安裝 用於Django setting對sqlserver的支持,不安裝的話會報ModuleNotFoundError: No module named 'sql_server'的錯誤

pip3 install django-pyodbc-azure

Django,setting配置以下:

'ENGINE': 'sql_server.pyodbc',

django 配置

進入Django項目目錄中 vim setting.py,在數據庫配置項中配置如下信息[基本和Windows上邊配置雷同]

DATABASES = {
  'default': {
    'ENGINE': 'sql_server.pyodbc',      # odbc鏈接固定寫法
    'NAME': 'Mydata',                   # 須要鏈接的數據庫名稱
    'USER': 'sa',                       # 數據庫鏈接帳戶
    'PASSWORD': '123456',               # 數據庫鏈接密碼
    'HOST': '192.168.88.81',            # 數據庫服務地址
    'PORT': '1433',                     # 數據庫鏈接端口
    'OPTIONS':{
    'driver':'SQL Server Native Client 11.0',
    'MARS_Connection': True,
    }
  }
}

配置完成後須要重啓uwsgi服務才生效,uwsgi服務這裏不作闡述,能夠參考博文《Django部署-uwsgi配置》

相關文章
相關標籤/搜索