使用Python開發(fā)客戶端,支持SQLServer和Oracle

Python開發(fā)客戶端支持在windows和Linux下兴溜,并支持?jǐn)?shù)據(jù)庫SQLServer和Oracle


1.?windows下開發(fā)和環(huán)境配置

1. SQLServer驅(qū)動連接

1. 下載支持SQLServer連接驅(qū)動的包:pymssql侦厚,在windows下能很好的支持SQLServer耻陕,所以直接下載完此包就可以使用,下載命令可以使用pip install

pymssql 或者 pip3 install pymssql刨沦。

2.

連接代碼: conn = pymssql.connect(host诗宣,username, pwd, dbName)

2.Oracle驅(qū)動

1.? 注意:系統(tǒng)版本、Python版本想诅、Oracle客戶端版本召庞、cx_Oracle版本必須保持一致。

比如我的windows電腦是64位的来破,Python是3.7 (64位)篮灼, cx_Oracle是與Python對應(yīng)的7.0(64位),Oracle客戶端:oracle_instantclient-basic-windows.64X-11.20.g

不建議在cmd中直接使用命令:pip

install cx_Oracle 下載cx_Oracle, 因為下載的版本是最高版本讳癌,導(dǎo)致不兼容穿稳。

我是在idea中如下操作:

然后再點擊+號,輸入cx-Oracle:


2. 我們在開發(fā)連接Oracle數(shù)據(jù)庫時晌坤,必須在本機有Oracle安裝包和客戶端或者要連接的Oracle數(shù)據(jù)庫所在的服務(wù)器上有Oracle安裝和客戶端逢艘,將客戶端路徑放在安裝Oracle 目錄下。

? ? 如果沒有將Oracle客戶端放在Oracle安裝目錄下骤菠,運行程序報:Error: DPI-1047: Cannot

locate a 64-bit Oracle Client library 的錯誤它改。(這個問題排查和調(diào)試用了將近一天的時間)。

? ??解決方法:1.?將客戶端的目錄商乎,比如 D:\oracle\instantclient_11_2 添加到path


? ? ? ? ?2. 配置環(huán)境變量ORACL_HOME:將客戶端的上一級目錄央拖,比如 D:\oracle 設(shè)置為ORACLE_HOME的值


? ? ? ? ?3. 如果配置了ORACLE_HOME,執(zhí)行報錯:```nls_lan python Error: 'ascii' codec can't encode characters in

position 28-31: ordinal not in range(128), 然后將下載的客戶端目錄放在


? ? ? ? ? ? ?Oracle安裝包下鹉戚,如C:\app\shizhenqiang\product\11.2.0\instancelient_11_2下鲜戒,并且在系統(tǒng)變量path:加上此路徑:C:\app\shizhenqiang\product\11.2.0\instancelient_11_2。

3. 上面問題解決完之后抹凳,又遇到錯誤:cx_Oracle.DatabaseError:ORA-12541: TNS:no listener


以上問題解決之后遏餐,windows Oracle就可以連接成功了。

2. Linux下開發(fā)和配置環(huán)境

將防火墻關(guān)閉赢底,如果不關(guān)閉失都,外網(wǎng)是無法請求插件執(zhí)行數(shù)據(jù)庫連接和查詢數(shù)據(jù)的。

查看防火墻的狀態(tài)的命令為:sudo systemctl status

firewalld幸冻。

打開防火墻的方式有兩種粹庞,一種是打開后重啟會恢復(fù)回原來的狀態(tài),命令為:sudo

systemctl start firewalld洽损;另一種是打開后重啟不會恢復(fù)到原來的狀態(tài)庞溜,命令為:sudo

systemctl enable firewalld,這種方式輸入命令后要重啟系統(tǒng)才會生效趁啸。

關(guān)閉防火墻的方式也有兩種强缘,和打開相對應(yīng)督惰,命令分別為

sudo systemctl stop firewalld

sudo systemctl disable firewalld不傅。

1.SQLServer驅(qū)動連接

在Linux下使用SQLServer旅掂,必須要安裝FreeTDS, 否則你在pip install pymssql 后,運行程序報:File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pymssql

", line 3, in <module>访娶。

1. 我首先是在deepin Linux下進(jìn)行配置環(huán)境和開發(fā)的商虐,因為deepin有友好的圖形化界面,

利于工具開發(fā)崖疤。

2. 安裝Python秘车,配置路徑:

1> sudo./configure --prefix=/usr/local/python-3.7.3

配置完之后,執(zhí)行如下命令

????2>sudo make && sudo make install

???驗證是否安裝成功:python3


證明已安裝成功

3 > 建立軟連接

ln -s/usr/local/python3.7.3/bin/python3.7 /usr/bin/python3.7.3??



3. 安裝FreeTds

?????? 1.下載安裝包:http://www.freetds.org/

2. 解壓 并進(jìn)入文件夾內(nèi)

3. ./configure--prefix=/etc/freetds --with-tdsver=7.0 --enable-msdblib --with-gnu-ld? --enable-shared --enable-static

4. 執(zhí)行make 再執(zhí)行make install

5. 查看FreeTds狀態(tài)執(zhí)行命令:tsql -C

4. 驅(qū)動連接

?????? 安裝完FreeTds 之后劫哼,就可以通過pymssql連接SQLServer數(shù)據(jù)庫了叮趴,代碼編寫與在windows下連接SQLServer的代碼一樣。

5. 打包Linux下可執(zhí)行客戶端

打包命令:pyinstaller –clean -F -cyunzhangfang.py


打包之后,?運行程序:./yunzhangfang

通過postman是可以調(diào)用接口并能數(shù)據(jù)庫連接成功和查詢數(shù)據(jù)权烧,

外網(wǎng)也可以調(diào)用眯亦。


6. 將打包的客戶端放到centos7系統(tǒng)上

只把打包的客戶端放到centos7上,不配置相關(guān)環(huán)境般码。

在centos7下, 也是和在deepin系統(tǒng)上一樣可以運行和查詢數(shù)據(jù)妻率。外網(wǎng)也可以訪問。


2.Oracle驅(qū)動連接

環(huán)境是在centos7系統(tǒng)上板祝,首先是安裝docker宫静,在docker上安裝Oracle。

1. 拉取Oracle鏡像

docker pull

registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g券时。

拉取的是阿里云的孤里。外網(wǎng)的太慢,容易斷開橘洞。

2. 下載完之后查看鏡像

執(zhí)行命令:docker images


3. 創(chuàng)建容器

root下命令:dockerrun -d -p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

????????這里說一下捌袜,命令后面的地址一定要是你下載的鏡像地址也就是你拉取鏡像名字,否則會出現(xiàn)名字已存在等問題震檩!

如果創(chuàng)建成功能會返回容器id


4. 啟動容器

root下命令:dockerstart oracle11g


5. 進(jìn)入鏡像

1. root下命令:dockerexec -it oracle11g bash

??執(zhí)行完此命令會自動切換成oracle 用戶

2. oracle下命令:進(jìn)行軟連接:sqlplus /nolog

??執(zhí)行完之后發(fā)現(xiàn)not foundcommand

3. 切換至root?編輯vi /etc/profile

?? exportORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2

???exportORACLE_SID=helowin

export PATH=$ORACLE_HOME/bin:$PATH

4. 創(chuàng)建軟連接

?? ln -s $ORACLE_HOME/bin/sqlplus? /usr/bin

5. 切換至oracle


執(zhí)行sqlplus /nolog

可以執(zhí)行成功琢蛤。

再執(zhí)行conn /as sysdba

顯示Connected


6. 修改Oracle下的用戶名密碼:

??alter user system identified by system;

alter user sys identified by sys;


這個時候通過Navicat連接Oracle數(shù)據(jù)庫,發(fā)現(xiàn)聯(lián)不通抛虏。

報錯:


7. 在Oracle用戶下執(zhí)行命令:lsnrctl status


修改/home/oracle/app/oracle/product/11.2.0/dbname_2/network/admin/tndnames.org


將host改為虛擬機的地址博其,service_name改為helowinXDB。


這個時候通過Navicat去連接迂猴,連接的時候一定要將service Name填寫為:helowinXDB


8. 現(xiàn)在編寫代碼


代碼測試可以連通慕淡。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市沸毁,隨后出現(xiàn)的幾起案子峰髓,更是在濱河造成了極大的恐慌傻寂,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件携兵,死亡現(xiàn)場離奇詭異疾掰,居然都是意外死亡,警方通過查閱死者的電腦和手機徐紧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門静檬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人并级,你說我怎么就攤上這事拂檩。” “怎么了嘲碧?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵稻励,是天一觀的道長。 經(jīng)常有香客問我愈涩,道長望抽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任钠署,我火速辦了婚禮糠聪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谐鼎。我一直安慰自己舰蟆,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布狸棍。 她就那樣靜靜地躺著身害,像睡著了一般。 火紅的嫁衣襯著肌膚如雪草戈。 梳的紋絲不亂的頭發(fā)上塌鸯,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機與錄音唐片,去河邊找鬼丙猬。 笑死,一個胖子當(dāng)著我的面吹牛费韭,可吹牛的內(nèi)容都是我干的茧球。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼星持,長吁一口氣:“原來是場噩夢啊……” “哼抢埋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤揪垄,失蹤者是張志新(化名)和其女友劉穎穷吮,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體饥努,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡捡鱼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了肪凛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片堰汉。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡辽社,死狀恐怖伟墙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情滴铅,我是刑警寧澤戳葵,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站汉匙,受9級特大地震影響拱烁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜噩翠,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一戏自、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧伤锚,春花似錦擅笔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至狞洋,卻和暖如春弯淘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吉懊。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工庐橙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人借嗽。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓态鳖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親淹魄。 傳聞我的和親對象是個殘疾皇子郁惜,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容