为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: V8
【操作系统】:Windows
【CPU】: X86
【问题描述】*:
Python执行异步数据库连接失败:(同步数据库连接正常)
(xzyd-langflow) PS E:\projects\python\xzyd-langflow\src\backend\base\langflow\services\database_ext> python .\test_async.py
2026-01-06 12:17:40.202 | INFO | main:setup_dm_env:16 - 成功加载达梦 DLL 目录: D:\Tools\dmdbms\bin
SQLAlchemy 版本: 2.0.41 (需 > 2.0.22)
dmSQLAlchemy 版本: 2.0.41 (需 > 2.0.7)
dmAsync 是否安装: True
2026-01-06 12:17:40.528 | ERROR | main:<module>:71 - 运行失败: <class 'dmPython.Connection'> returned a result with an exception set
-------------------test_async.py------------------------
import os
import platform
from loguru import logger
import sqlalchemy
def setup_dm_env():
dm_bin_path = r"D:\Tools\dmdbms\bin"
if platform.system().lower() == 'windows':
if os.path.exists(dm_bin_path):
os.environ['PATH'] = dm_bin_path + os.pathsep + os.environ.get('PATH', '')
if hasattr(os, 'add_dll_directory'):
try:
os.add_dll_directory(dm_bin_path)
logger.info(f"成功加载达梦 DLL 目录: {dm_bin_path}")
except Exception as e:
logger.error(f"加载 DLL 目录失败: {e}")
setup_dm_env()
import dmSQLAlchemy
try:
import dmAsync
has_dm_async = True
except:
has_dm_async = False
print(f"SQLAlchemy 版本: {sqlalchemy.version} (需 > 2.0.22)")
print(f"dmSQLAlchemy 版本: {dmSQLAlchemy.current_version} (需 > 2.0.7)")
print(f"dmAsync 是否安装: {has_dm_async}")
import asyncio
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker
from sqlalchemy import text
engine = create_async_engine(
'dm+dmAsync://LANGFLOW:LANGFLOWLANGFLOWLANGFLOW@192.168.206.132:5236/XZYD_LANGFLOW',
echo=True
)
AsyncSessionLocal = async_sessionmaker(
bind=engine,
class_=AsyncSession,
autoflush=False
)
async def async_func():
async with AsyncSessionLocal() as session:
# 执行异步查询
query = text('SELECT * FROM DUAL')
result = await session.execute(query)
rows = result.fetchall()
for row in rows:
print(f"查询结果: {row}")
# 异步清理
await engine.dispose()
if name == "main":
try:
asyncio.run(async_func())
except Exception as e:
logger.error(f"运行失败: {e}")

补充问题描述:
import asyncio
import dmAsync
async def test():
conn = await dmAsync.connect(
host='192.168.206.132',
port=5236,
user='LANGFLOW',
password='LANGFLOWLANGFLOWLANGFLOW'
)
print("连接成功")
await conn.close()
asyncio.run(test())
异常堆栈信息如下:
Traceback (most recent call last):
File "E:\projects\python\xzyd-langflow\src\backend\base\langflow\services\database_ext\test_2.py", line 14, in <module>
asyncio.run(test())
File "D:\Tools\miniconda3\lib\asyncio\runners.py", line 44, in run
return loop.run_until_complete(main)
File "D:\Tools\miniconda3\lib\asyncio\base_events.py", line 649, in run_until_complete
return future.result()
File "E:\projects\python\xzyd-langflow\src\backend\base\langflow\services\database_ext\test_2.py", line 5, in test
conn = await dmAsync.connect(
File "E:\projects\python\xzyd-langflow.venv\lib\site-packages\dmAsync\connection.py", line 40, in connect
connection = Connection(host=host, user=user, password=password, port=port, dsn=dsn, autoCommit=autoCommit,
File "E:\projects\python\xzyd-langflow.venv\lib\site-packages\dmAsync\connection.py", line 552, in init
self.init_connect_with_param(host, user, password, port, dsn, autoCommit=autoCommit,
File "E:\projects\python\xzyd-langflow.venv\lib\site-packages\dmAsync\connection.py", line 608, in init_connect_with_param
self._conn = dmPython.connect(user=self._user, password=self._password, autoCommit=autoCommit, dsn=self._dsn,
SystemError: <class 'dmPython.Connection'> returned a result with an exception set