windows環(huán)境中python連接到達(dá)夢(mèng)庫及相關(guān)報(bào)錯(cuò)解決辦法
首先安裝python,達(dá)夢(mèng)數(shù)據(jù)庫,這里默認(rèn)已經(jīng)安裝好了
1、安裝達(dá)夢(mèng)數(shù)據(jù)庫(dmPython)驅(qū)動(dòng)
一、獲取驅(qū)動(dòng)文件
從達(dá)夢(mèng)數(shù)據(jù)庫安裝目錄獲取 (通常位于 DM安裝目錄\drivers\python\dmPython)
或從達(dá)夢(mèng)官網(wǎng)下載對(duì)應(yīng)版本的Windows驅(qū)動(dòng)包
二、復(fù)制文件
找到達(dá)夢(mèng)數(shù)據(jù)庫安裝目錄中的dmPython文件夾
將該文件夾復(fù)制到Python的site-packages目錄下:
通常路徑為:C:\Python38\Lib\site-packages\
確保目錄結(jié)構(gòu)如下:
C:\Python38\Lib\site-packages\
└── dmPython
├── __init__.py
├── dmPython.pyd
└── ...其他文件
如果不清楚python的安裝路徑,可以使用下面的方法確認(rèn)一下:
打開cmd,運(yùn)行:
where python
或者 運(yùn)行:
python -c "import sys; print(sys.executable)"
會(huì)輸出 python的路徑
三、 安裝驅(qū)動(dòng)
打開cmd,進(jìn)入到 C:\Python38\Lib\site-packages\dmPython 目錄中,(就是上一步復(fù)制文件夾后的目錄),或者直接在文件夾路徑欄輸入cmd 回車,能快速打開cmd并進(jìn)入到當(dāng)前目錄


然后輸入
python setup.py install
等待安裝完成
安裝完成后,會(huì)在 ......\Lib\site-packages\ 目錄下看到 dmPython-2.5.8-py3.12-win-amd64.egg 目錄
2、測(cè)試安裝
一、打開vscode
創(chuàng)建.py文件
輸入:
import dmPython
import sys
try:
conn = dmPython.connect(
user='SYSDBA',
password='SYSDBA',
server='127.0.0.1',
port=5236,
connect_timeout=5 # 添加超時(shí)參數(shù)
)
print("連接成功!服務(wù)版本:", conn.server_version)
conn.close()
except dmPython.Error as e:
print("達(dá)夢(mèng)原生錯(cuò)誤:", e)
except Exception as e:
print("通用異常:", sys.exc_info()[1])
或
import dmPython
# 檢查驅(qū)動(dòng)是否包含關(guān)鍵方法
print("dmPython 可用方法:", [attr for attr in dir(dmPython) if not attr.startswith('_')])
# 嘗試建立連接(替換實(shí)際參數(shù))
try:
conn = dmPython.connect(
user='SYSDBA',
password='SYSDBA',
server='localhost',
port=5236
)
print("連接成功!")
conn.close()
except Exception as e:
print("連接失敗:", e)如果不方便創(chuàng)建文件,可以直接在vscode的終端里面,輸入:
python -c """
import dmPython
try:
conn = dmPython.connect(user='SYSDBA', password='SYSDBA', server='127.0.0.1', port=5236)
print('連接成功!')
conn.close()
except Exception as e:
print('連接失敗:', e)
"""然后回車運(yùn)行,查看運(yùn)行結(jié)果;
如果連接成功,則大功告成,如果報(bào)錯(cuò),查看報(bào)錯(cuò)解決辦法;
3、報(bào)錯(cuò)解決
一、連接失敗: <class 'dmPython.Connection'> returned a result with an exception set
這個(gè)錯(cuò)誤表明 dmPython 驅(qū)動(dòng)雖然被成功導(dǎo)入,但在嘗試建立數(shù)據(jù)庫連接時(shí),底層 C 代碼拋出了異常但未能正確傳遞到 Python 層。
核心排查步驟:
1、驗(yàn)證驅(qū)動(dòng)完整性:
# 檢查驅(qū)動(dòng)文件是否存在
python -c "import os, dmPython; print(f'驅(qū)動(dòng)路徑: {os.path.dirname(dmPython.__file__)}')"正常情況會(huì)打印驅(qū)動(dòng)的路徑,大概是:....\Lib\site-packages\dmpython-2.5.8-py3.12-win-amd64.egg
如果沒有這個(gè)目錄,建議回到第1步,重新安裝達(dá)夢(mèng)驅(qū)動(dòng);
2、檢查依賴庫
打開Windows PowerShell,進(jìn)入到達(dá)夢(mèng)數(shù)據(jù)庫目錄的 bin 目錄中

運(yùn)行下面兩行:
ls *odbc* ls *dmdpi*
運(yùn)行結(jié)果:

重點(diǎn)查看是否存在這兩個(gè)庫文件,如果不存在可以沖其他相同環(huán)境下的windows中拷貝過來
3、檢查數(shù)據(jù)庫連接信息
也有可能本地或遠(yuǎn)程不存在SYSDBA數(shù)據(jù)庫,找一個(gè)DM管理工具可以確認(rèn)連上去的數(shù)據(jù)庫,然后使用把上述測(cè)試代碼中的連接信息改成可以連接上去的數(shù)據(jù)庫的連接信息,再重試
二、連接失敗: module 'dmPython' has no attribute 'connect'
這個(gè)錯(cuò)誤表明 dmPython 模塊雖然能導(dǎo)入,但缺少關(guān)鍵的 connect 方法,這通常是由于驅(qū)動(dòng)文件不完整或安裝不正確導(dǎo)致的。
1、檢查關(guān)鍵文件是否存在
python -c "import dmPython, os; print(os.path.dirname(dmPython.__file__))"
正常情況會(huì)打印驅(qū)動(dòng)的路徑,大概是:....\Lib\site-packages\dmpython-2.5.8-py3.12-win-amd64.egg
如果沒有這個(gè)目錄,建議回到第1步,重新安裝達(dá)夢(mèng)驅(qū)動(dòng);
2、檢查驅(qū)動(dòng)與Python的兼容性
python -c "import struct; print('Python位數(shù):', struct.calcsize('P')*8, '位')"正常情況下會(huì)輸出: Python位數(shù): 64 位
反正必須與達(dá)夢(mèng)驅(qū)動(dòng)架構(gòu)一致,不能一個(gè)是 64位 一個(gè)是32位
如果不匹配,重裝匹配的 Python 或達(dá)夢(mèng)驅(qū)動(dòng)(如達(dá)夢(mèng)是64位,Python也需64位)
三、命令行中能成功連接,但I(xiàn)DE/VSCode中卻找不到dmPython模塊
這是典型的Python環(huán)境配置不一致問題。
在終端執(zhí)行命令:
where python python -c "import sys; print(sys.executable)"
這兩個(gè)命令都可以輸出 python 安裝路徑。
在 vscode 的終端中也輸入這兩個(gè)命令,查看輸出結(jié)果
如果路徑不同?:說明兩者使用了不同的Python解釋器
解決辦法1:修改VSCode解釋器路徑
- 在VSCode中按
Ctrl+Shift+P - 輸入
Python: Select Interpreter - 選擇與命令行相同的Python路徑(即步驟上述命令輸出的路徑)
解決辦法:2:復(fù)制驅(qū)動(dòng)到VSCode環(huán)境
在cmd中運(yùn)行
python -c "import dmPython, os; print(os.path.dirname(dmPython.__file__))"
會(huì)輸出一段路徑, 復(fù)制到VSCode環(huán)境的site-packages
cp -r <上述路徑>/dmPython <VSCode的Python路徑>/Lib/site-packages/
驗(yàn)證修復(fù)結(jié)果:在vscode中,運(yùn)行 測(cè)試代碼,記得替換下面的 xxx
import dmPython
print("模塊路徑:", dmPython.__file__)
try:
conn = dmPython.connect(
user='xxx',
password='xxx',
server='xxx',
port=5236
)
print("VSCode連接成功!")
conn.close()
except Exception as e:
print("VSCode連接失敗:", e)總結(jié)
到此這篇關(guān)于windows環(huán)境中python連接到達(dá)夢(mèng)庫及相關(guān)報(bào)錯(cuò)解決辦法的文章就介紹到這了,更多相關(guān)windows python連接達(dá)夢(mèng)庫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python正則表達(dá)式匹配不包含某幾個(gè)字符的字符串方法
今天小編就為大家分享一篇python正則表達(dá)式匹配不包含某幾個(gè)字符的字符串方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07
Python實(shí)現(xiàn)Excel表格轉(zhuǎn)HTML
Excel工作簿是常用的表格格式,廣泛用于組織、分析及展示數(shù)據(jù),這篇文章主要為大家詳細(xì)介紹了如何使用Python將Excel工作簿或工作表轉(zhuǎn)換為HTML文件,需要的可以參考下2024-03-03
深入淺析Python科學(xué)計(jì)算庫Scipy及安裝步驟
這篇文章主要介紹了Python科學(xué)計(jì)算庫—Scipy的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10
python實(shí)現(xiàn)超市管理系統(tǒng)(后臺(tái)管理)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)超市管理系統(tǒng),增加后臺(tái)管理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
Python實(shí)現(xiàn)的生產(chǎn)者、消費(fèi)者問題完整實(shí)例
這篇文章主要介紹了Python實(shí)現(xiàn)的生產(chǎn)者、消費(fèi)者問題,簡(jiǎn)單描述了生產(chǎn)者、消費(fèi)者問題的概念、原理,并結(jié)合完整實(shí)例形式分析了Python實(shí)現(xiàn)生產(chǎn)者、消費(fèi)者問題的相關(guān)操作技巧,需要的朋友可以參考下2018-05-05

