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


然后輸入
python setup.py install
等待安裝完成
安裝完成后,會在 ......\Lib\site-packages\ 目錄下看到 dmPython-2.5.8-py3.12-win-amd64.egg 目錄
2、測試安裝
一、打開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ù)
)
print("連接成功!服務版本:", conn.server_version)
conn.close()
except dmPython.Error as e:
print("達夢原生錯誤:", e)
except Exception as e:
print("通用異常:", sys.exc_info()[1])
或
import dmPython
# 檢查驅(qū)動是否包含關鍵方法
print("dmPython 可用方法:", [attr for attr in dir(dmPython) if not attr.startswith('_')])
# 嘗試建立連接(替換實際參數(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)
"""然后回車運行,查看運行結果;
如果連接成功,則大功告成,如果報錯,查看報錯解決辦法;
3、報錯解決
一、連接失敗: <class 'dmPython.Connection'> returned a result with an exception set
這個錯誤表明 dmPython 驅(qū)動雖然被成功導入,但在嘗試建立數(shù)據(jù)庫連接時,底層 C 代碼拋出了異常但未能正確傳遞到 Python 層。
核心排查步驟:
1、驗證驅(qū)動完整性:
# 檢查驅(qū)動文件是否存在
python -c "import os, dmPython; print(f'驅(qū)動路徑: {os.path.dirname(dmPython.__file__)}')"正常情況會打印驅(qū)動的路徑,大概是:....\Lib\site-packages\dmpython-2.5.8-py3.12-win-amd64.egg
如果沒有這個目錄,建議回到第1步,重新安裝達夢驅(qū)動;
2、檢查依賴庫
打開Windows PowerShell,進入到達夢數(shù)據(jù)庫目錄的 bin 目錄中

運行下面兩行:
ls *odbc* ls *dmdpi*
運行結果:

重點查看是否存在這兩個庫文件,如果不存在可以沖其他相同環(huán)境下的windows中拷貝過來
3、檢查數(shù)據(jù)庫連接信息
也有可能本地或遠程不存在SYSDBA數(shù)據(jù)庫,找一個DM管理工具可以確認連上去的數(shù)據(jù)庫,然后使用把上述測試代碼中的連接信息改成可以連接上去的數(shù)據(jù)庫的連接信息,再重試
二、連接失敗: module 'dmPython' has no attribute 'connect'
這個錯誤表明 dmPython 模塊雖然能導入,但缺少關鍵的 connect 方法,這通常是由于驅(qū)動文件不完整或安裝不正確導致的。
1、檢查關鍵文件是否存在
python -c "import dmPython, os; print(os.path.dirname(dmPython.__file__))"
正常情況會打印驅(qū)動的路徑,大概是:....\Lib\site-packages\dmpython-2.5.8-py3.12-win-amd64.egg
如果沒有這個目錄,建議回到第1步,重新安裝達夢驅(qū)動;
2、檢查驅(qū)動與Python的兼容性
python -c "import struct; print('Python位數(shù):', struct.calcsize('P')*8, '位')"正常情況下會輸出: Python位數(shù): 64 位
反正必須與達夢驅(qū)動架構一致,不能一個是 64位 一個是32位
如果不匹配,重裝匹配的 Python 或達夢驅(qū)動(如達夢是64位,Python也需64位)
三、命令行中能成功連接,但IDE/VSCode中卻找不到dmPython模塊
這是典型的Python環(huán)境配置不一致問題。
在終端執(zhí)行命令:
where python python -c "import sys; print(sys.executable)"
這兩個命令都可以輸出 python 安裝路徑。
在 vscode 的終端中也輸入這兩個命令,查看輸出結果
如果路徑不同?:說明兩者使用了不同的Python解釋器
解決辦法1:修改VSCode解釋器路徑
- 在VSCode中按
Ctrl+Shift+P - 輸入
Python: Select Interpreter - 選擇與命令行相同的Python路徑(即步驟上述命令輸出的路徑)
解決辦法:2:復制驅(qū)動到VSCode環(huán)境
在cmd中運行
python -c "import dmPython, os; print(os.path.dirname(dmPython.__file__))"
會輸出一段路徑, 復制到VSCode環(huán)境的site-packages
cp -r <上述路徑>/dmPython <VSCode的Python路徑>/Lib/site-packages/
驗證修復結果:在vscode中,運行 測試代碼,記得替換下面的 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)總結
到此這篇關于windows環(huán)境中python連接到達夢庫及相關報錯解決辦法的文章就介紹到這了,更多相關windows python連接達夢庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
pycharm中import呈現(xiàn)灰色原因的解決方法
這篇文章主要介紹了pycharm中import呈現(xiàn)灰色原因的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03
python 使用GDAL實現(xiàn)柵格tif轉(zhuǎn)矢量shp的方式小結
今天通過本文給大家分享python 使用GDAL實現(xiàn)柵格tif轉(zhuǎn)矢量shp的方式小結,計劃是使用柵格轉(zhuǎn)矢量的方式,將柵格數(shù)據(jù)轉(zhuǎn)為矢量shp文件,然后進行矢量切片,使用Mapbox進行前端動態(tài)渲染,具體內(nèi)容詳情跟隨小編一起看看吧2021-08-08

