为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: dm8
【操作系统】:linux
【CPU】: x86
【问题描述】*:如何使用PooledDB连接达梦的情况下,连接达梦的主备。
现在我的代码如下:
self.pool: PooledDB = PooledDB(
creator=dmPython,
mincached=10,
maxcached=100,
cursorclass=DictCursor,
dsn=f"dm://{self.user}:{self.password}@DM_DW?DM_DW=({self.addr})&schema={self.dbname}&LOGIN_MODE={self.login_mode}&SWITCH_TIMES={self.switch_times}&SWITCH_INTERVAL={self.switch_interval}",
)
连不上。
我用如下方式连接:
self.pool: PooledDB = PooledDB(
creator=dmPython,
mincached=10,
maxcached=100,
server="group",
cursorclass=DictCursor,
port=self.port,
user=self.user,
password=self.password,
autoCommit=True,
dsn=f"({self.host})"
)
还是连不上。
我在论坛,网上,全都搜不到怎么连接的。
配置使用服务名连接达梦主备集群
配置文件描述
dm_svc.conf 是一个客户端(访问数据库的服务器)配置文件,它包含了 DM 各接口和客户端工具所需要配置的一些参数。
**dm_svc.conf配置在应用服务器上,**通过服务名连接的方式可实现故障重连(如:主库发生故障,可自动连接到备库)
dm_svc.conf 的工作目录是固定的,不能改变,不同操作系统dm_svc.conf位置如下:
1)32 位的 DM 安装在 Win32 操作平台下,此文件位于%SystemRoot%\system32
目录;
2)64 位的 DM 安装在 Win64 操作平台下,此文件位于%SystemRoot%\system32
目录;
3) 32 位的 DM 安装在 Win64 操作平台下,此文件位于%SystemRoot%\SysWOW64
目录;
4)在 Linux 平台下,此文件位于/etc 目录。
主备集群所需的配置项
dm_svc.conf 配置文件的内容分为全局配置区和服务配置区。全局配置区在前,服务配置区在后,以“[服务名]”开头,服务配置区中的配置优先级高于全局配置区。
vim /etc/dm_svc.conf
全局配置区
TIME_ZONE=(+480)#指明客户端的默认时区
LANGUAGE=(cn)#当前数据库服务器使用的语言,会影响帮助信息错误和提示信息。支持的选项为:CN(表示中文)和 EN(表示英文)。
DMDW=(主库ip:数据库端口,备库ip:数据库端口) #这里的服务名为DMDW,可自定义
服务配置区
[DMDW] #"[]"里面要使用自定义的服务名,这里是DMDW
LOGIN_MODE =(1)#连接模式:只连接主库
SWITCH_TIMES=(2000)#以服务名连接数据库时,若未找到符合条件的库成功建立连接,将尝试遍历服务名中库列表的次数。
SWITCH_INTERVAL=(10)#在服务器之间切换的时间间隔,单位为毫秒。
#其中服务名DM可以修改为系统相对应的名称(自定义),端口ip根据实际情况更改。
配置文件示例
vim /etc/dm_svc.conf
TIME_ZONE=(+480)
LANGUAGE=(cn)
DMDW=(172.16.81.27:5236,172.16.81.26:5236)
[DMDW]
LOGIN_MODE=(1)
SWITCH_TIMES=(2000)
SWITCH_INTERVAL=(10)
把单机里边的连接方式“server='localhost'”改成server='服务名',例如上面示例的服务名是DMDW
server='DMDW'
python连接单机达梦数据库参考代码示例https://eco.dameng.com/document/dm/zh-cn/app-dev/python-python.html