標籤:linux django sqlserver debian pyodbc
費了將近一天時間,終於解決,記下來留給需要的人
需要安裝的:
python-odbc : https://github.com/mkleehammer/pyodbc下載後install
安裝python-odbc的如果報找不到sql.h檔案錯誤,需要apt-get install g++,
這塊代碼是用C++寫的,需要編譯器
django-pyodbc : https://pypi.python.org/pypi/django-pyodbc 下載後install
unixODBC:http://www.unixodbc.org/. linux下的odbc資料庫源
安裝:./configure & make & make install
或者 apt-get install unixODBC unixODBC-dev
FreeTDS:http://www.freetds.org/ linux下的sqlserver驅動程式
安裝:./configure --prefix=/usr/local/freetds --with-tdsver=8.0 --enable-msdblib --with-gnu-ld --enable-shared --enable-static
make & make install
apt-get install freetds freetds-dev tdsodbc
配置:
1.配置FreeTDS
找到 freetds.conf下面添加:
[MYSQLSERVER]
host = sqlserver伺服器IP
port = 1433
tds version = 8.0
client charset = UTF-8
把 tsql所在目錄加入環境變數 如我的操作:vim /etc/profile 加一行PATH=$PATH:/usr/local/freetds/bin
再source /etc/profile 使其馬上生效
測試FreeTDS是否安裝成功:
tsql -C 看安裝環境
tsql -S MYSQLSERVER -H sqlserver資料庫IP -p 1433 -U 帳號 -P 密碼
成功會看到如下資訊:
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1>
這時輸入sql命令測試一下吧:
use test_db
go
select * from test;
go
安裝成功後再繼續下一步吧
2.配置unixODBC
找到odbc.ini odbcinst.ini
我的在/etc/odbc.ini /etc/odbcinst.ini
vim /etc/odbcinst.ini加入
[FreeTDS]
Description = ODBC of FreeTDS for MS-SQLServer
Driver = /usr/local/freetds/lib/libtdsodbc.so
FileUsage = 1
vim /etc/odbc.ini加入
[odbc串連名]
Driver = FreeTDS
ServerName = MYSQLSERVER(FreeTDS裡配的串連名)
Database = test_db(資料庫名)
測試unixODBC是否安全配置成功:
isql -v odbc串連名 帳號 密碼
成功後會出現如下資訊:
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
寫幾個sql語句測試下吧,不過這次不用再use test_db了,因為已經配過資料庫名稱了
select * from test
也不用go了,呵呵
3.安裝完python-odbc和django-pyodbc後,配置django的setting(安裝不說了,比較簡單)
‘kids‘: {
‘ENGINE‘: ‘django_pyodbc‘,
‘NAME‘: ‘資料庫名‘, #這個不需要,不過django裡有限制,必須有NAME項,這裡不會生效,實際的在odbc.ini裡寫的
‘USER‘: ‘帳號‘,
‘PASSWORD‘: ‘密碼‘,
‘HOST‘: ‘‘, #這個也不會生效,實際生效的是freetds.conf裡配置的
‘OPTIONS‘:{
‘driver‘: ‘FreeTDS‘,
‘dsn‘:‘odbc串連名‘, #ODBC DSN name defined in your odbc.ini,
}
over!
linux(debian)系統django配遠端連線sqlserver資料庫