基于达梦数据库开发-python篇

文章目录

  • 前言
  • 一、搭建demo
    • 前提
    • 初始化
    • 简单demo
  • 二、可能出现的异常情况
    • DistutilsSetupError
    • No module named 'dmPython'
    • list报错
  • 总结


前言

出于信创的考虑,近年来基于国产数据库达梦的应用开发逐渐变多。本文将介绍在windows环境下基于DM8版本的python的简单开发使用。


一、搭建demo

前提

需要以下前提

  • 安装了python(本文使用了3.8.5)。
  • 安装了达梦数据库并选择安装了驱动组件。
  • 配置了 DM_HOME 环境变量为安装的达梦数据库路径(本文为D:\dmdbms)
  • 在Path环境变量中添加dpi 的引用路径(本文为D:\dmdbms\drivers\dpi)

初始化

在CMD窗口下,进入达梦安装的python驱动路径下(本文为D:\dmdbms\drivers\python\dmPython),需要注意不同版本的python对应的驱动可能略有不同,
使用如下命令,完成python的达梦包的安装

python setup.py install

简单demo

首先先在达梦数据库中建立相应的账号以及对应的表,并将表中存放简单的测试书(本文建立了名称为TESTDM的账号,以及对应T_CITY_T,具体值如下)
在这里插入图片描述
打开python 的IDLE 工具,依次输入如下命令

>>> import dmPython
>>> conn=dmPython.connect(user='TESTDM',password='123456',server= 'localhost',port=5236)
>>> cursor = conn.cursor()
>>> cursor.execute('select "CITY_ID","CITY_NAME","REGION_ID" from "TESTDM"."T_CITY_T"')
>>> values = cursor.fetchall()
>>> print(values)

输出类似如下结果:

[('BJ      ', '北京', 1), ('SJZ     ', '石家庄', 1), ('SH      ', '上海', 2), ('NJ      ', '南京', 2), ('GZ      ', '广州', 3), ('HK      ', '海口', 3), ('WH      ', '武汉', 4), ('CS      ', '长沙', 4), ('SY      ', '沈阳', 5), ('XA      ', '西安', 6), ('CD      ', '成都', 7), ('BJ      ', '北京', 1), ('SJZ     ', '石家庄', 1), ('SH      ', '上海', 2), ('NJ      ', '南京', 2), ('GZ      ', '广州', 3), ('HK      ', '海口', 3), ('WH      ', '武汉', 4), ('CS      ', '长沙', 4), ('SY      ', '沈阳', 5), ('XA      ', '西安', 6), ('CD      ', '成都', 7), ('WLMQ    ', '乌鲁木齐', 6)]

以上测试表明基于达梦的python开发环境搭建完成。

二、可能出现的异常情况

DistutilsSetupError

在进行达梦包安装时有时会出现如下类似错误:

Traceback (most recent call last):File "setup.py", line 112, in <module>raise SetupError(messageFormat % (userDmHome,DAMENG_VERSION))
distutils.errors.DistutilsSetupError: Dameng home (d:\dmdbms) does not refer to an DM8.1 installation or dmdpi library missing.

这时候需要通过IDLE工具逐步跟踪setup.py的脚本执行情况,可能出错行为

write_pystr='import os\nos.add_dll_directory(r\''+os.environ.get("DM_HOME")+'\\bin'+'\')'

需要调整为

write_pystr='import os \n os.add_dll_directory(r\''+os.environ.get("DM_HOME")+'\\bin'+'\')'

增加相应的空格即可。

No module named ‘dmPython’

在idle执行如下命令:

 import dmPython

可能会出现

Traceback (most recent call last):File "<pyshell#1>", line 1, in <module>import dmPython
ModuleNotFoundError: No module named 'dmPython'

这时候需要采用如下方式
首先在CMD窗口中输入

pip list 

确定是否存在 dyPython,如果不存在则需要进一步核查安装情况,如果存在,则需要关闭idle,再重新打开。

list报错

在安装完dmpython后,执行pip list 可能会出现如下错误

Error processing line 1 of D:\python385\lib\site-packages\dmPython.pth:Traceback (most recent call last):File "D:\python385\lib\site.py", line 169, in addpackageexec(line)File "<string>", line 1, in <module>File "D:\python385\lib\site-packages\dpi.py", line 2os.add_dll_directory(r'd:\dmdbms\bin')^IndentationError: unexpected indent

这时候需要编辑文件dpi.py(默认在python的lib\site-packages路径下,本文为D:\python385\lib\site-packages\dpi.py)
修改

import osos.add_dll_directory(r'd:\dmdbms\bin')

import os
os.add_dll_directory(r'd:\dmdbms\bin')

去除相应的空格

总结

本文讲述了在windows环境下使用python进行达梦数据库开发的简单示例,并对一些可能出现的异常情况进行了阐述,希望能够有助于相关开发人员。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/808803.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab使用教程(40)—二维傅里叶变换和多项式插值

1使用 FFT 进行多项式插值 使用快速傅里叶变换 (FFT) 来估算用于对一组数据进行插值的三角函数多项式的系数。 1.1数学中的 FFT FFT 算法通常与信号处理应用相关&#xff0c;但也可以在数学领域更广泛地用作快速计算工具。例如&#xff0c;通常通过解算简单的线性系统来计算…

24/04/11总结

IO流(First edition): IO流&#xff1a;用于读入写出文件中的数据 流的方向&#xff08;输入指拿出来,输出指写进去) 输入流:读取 输出流:写出 操作文件类型 字节流:所有类型文件 字符流:纯文本 字节流: InputStream的子类:FileInputStream:操作本地文件的字节输入流 OutputSt…

ssm036基于Java的图书管理系统+jsp

图书管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本图书管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处…

数位排序-自定义比较函数

数位排序 4653. 数位排序 - AcWing题库 题目大意&#xff1a;输入两个数&#xff0c;n,m。 将1~n的数&#xff0c;按照以下规则排序&#xff1a; ​ 当两个数各个数位之和不同时&#xff0c;将数位和较小的排在前面&#xff0c;当数位之和相等时&#xff0c;将数值小的排在…

光伏电站运维管理系统功能全面详解

一、系统概述 光伏电站运维管理系统是一款专为光伏电站设计的综合性管理平台。该系统集成了先进的数据监测、故障诊断、运维任务管理、设备信息管理、用户权限管理以及系统维护与升级等功能&#xff0c;旨在提供全面、高效、智能的光伏电站运维服务&#xff0c;确保电站安全、…

java国产化云HIS基层医院系统源码 SaaS模式

目录 ​ 云HIS开发环境 功能模块介绍&#xff1a; 1、门诊模块 2、住院模块 3、药房、药库模块 ​编辑 4、电子病历模块 5、统计报表模块 6、系统管理模块 系统优势 云his之电子病历子系统功能 云 his 系统是运用云计算、大数据、物联网等新兴信息技术&#xff0c;按…

【C++初阶】C++简单入门(长期维护)

本篇博客是对C的一些简单知识分享&#xff0c;有需要借鉴即可。 C简单入门目录 一、C前言1.C的概念&#xff1a;2.C发展历程3.C如何学&#xff1f; 二、C入门1.C关键字(C98标准)2.命名空间3.C输入&输出①概念说明②使用说明③特征说明④细节拓展⑤cout与cin的意义 4.缺省参…

JavaScript_注释数据类型

JavaScript_语法_注释&数据类型&#xff1a; 1.2注释&#xff1a; 1.单行注释&#xff1a;//注释内容 2.多行注释&#xff1a;/*注释内容*/ 1.3数据类型&#xff1a; 1.原始数据类型(基本数据类型)&#xff1a;&#xff08;只有这五种&#xff09; 1.number&#xff1a;数字…

参花期刊投稿发表论文

《参花》是由国家新闻出版总署批准&#xff0c;吉林省文化和旅游厅主管&#xff0c;吉林省文化馆主办的正规文学类期刊。文学是用语言塑造形象反映社会生活的一种语言艺术&#xff0c;是自觉、独立而又面向整个社会的艺术&#xff0c;是文化中极具强烈感染力的重要组成部分&…

经典机器学习模型(八)梯度提升树GBDT详解

经典机器学习模型(八)梯度提升树GBDT详解 Boosting、Bagging和Stacking是集成学习(Ensemble Learning)的三种主要方法。 Boosting是一族可将弱学习器提升为强学习器的算法&#xff0c;不同于Bagging、Stacking方法&#xff0c;Boosting训练过程为串联方式&#xff0c;弱学习器…

如何在 7 天内掌握C++?

大家好&#xff0c;我是小康&#xff0c;今天我们来聊下如何快速学习 C 语言。 本篇文章适合于有 C 语言编程基础的小伙伴们&#xff0c;如果还没有学习过 C&#xff0c;请看这篇文章先入个门&#xff1a;C语言快速入门 引言&#xff1a; C&#xff0c;作为一门集面向过程和…

【Python】科研代码学习:十七 模型参数合并,safetensors / bin

【Python】科研代码学习&#xff1a;十七 模型参数合并&#xff0c;safetensors / bin 前言解决代码知识点&#xff1a;safetensors 和 bin 的区别&#xff1f;知识点&#xff1a;save_pretrained 还会新增的文件知识点&#xff1a;在保存模型参数时&#xff0c;大小发生了成倍…

华纳云:如何选择适合自己需求的备份服务器?

备份服务器是企业和个人保障数据安全和灾难恢复的重要设备之一&#xff0c;而选择适合自己需求的备份服务器是确保数据备份效果的关键一步。以下是一些关于如何选择适合需求的备份服务器的指南&#xff1a; 1. 确定数据量和备份频率&#xff1a; 首先&#xff0c;您需要确定您的…

面试经典150题——移除元素

面试经典150题 day2 题目来源我的题解方法一 双指针 题目来源 力扣每日一题&#xff1b;题序&#xff1a;27 我的题解 方法一 双指针 使用两个指针left和right分别指向最终数组的末尾和最终数组不需要的元素的最左侧。当nums[left]等于val&#xff0c;则将nums[right]替换nu…

mysql数据库死锁 处理方法

MySQL数据库死锁是一个常见的问题&#xff0c;通常发生在多个事务试图以不同的顺序锁定资源时。当两个或多个事务相互等待对方释放资源&#xff0c;就形成了死锁。以下是关于MySQL数据库死锁的删除方法&#xff0c;以及针对代码开发问题和报错问题的解答。 一、MySQL数据库死锁…

基于单链表的通讯录C语言实现

关于单链表的详细了解请见博主的另一篇博客&#xff0c;本文旨在对单链表进行应用&#xff0c;采用C语言编写。 http://t.csdnimg.cn/iBpFa 一、驱动层 1.1 SList.h #pragma once#include<stdio.h> #include<stdlib.h> #include<assert.h> #include"…

pytest教程-25-生成覆盖率报告插件-pytest-cov

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了pytest多重断言插件pytest-assume,本小节我们讲解一下pytest生成覆盖率报告插件pytest-cov。 测量代码覆盖率的工具在测试套件运行时观察你的代码&#xff0c;并跟踪哪些行被运行&#xff0c;…

10:00面试,10:08就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到8月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…

【我的小工具】生成React页面类

有了数据表的结构信息&#xff0c;就能生成React 的页面类&#xff0c;快捷方便。 生成界面如下&#xff1a; 生成的React FrmUser.js页面如下&#xff1a; 只需再写里面的操作逻辑代码。

Claude使用教程

claude 3 opus面世后&#xff0c;网上盛传吊打了GPT-4。网上这几天也已经有了许多应用&#xff0c;但竟然还有很多小伙伴不知道国内怎么用gpt&#xff0c;也不知道怎么去用这个据说已经吊打了gpt-4的claude3。 今天我们想要进行的一项尝试就是—— 用claude3和gpt4&#xff0c…