基于达梦数据库开发-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;其可以帮助管理者在短时间内处…

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

一、系统概述 光伏电站运维管理系统是一款专为光伏电站设计的综合性管理平台。该系统集成了先进的数据监测、故障诊断、运维任务管理、设备信息管理、用户权限管理以及系统维护与升级等功能&#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;大小发生了成倍…

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…

C语言操作符详解(三)

一、表达式求值 1.1整型提升 C语言中整型算术运算总是至少以缺省整型类型的精度来进行的。 为了获得这个精度&#xff0c;表达式中的字符和短整型操作数在使用之前被转换为普通整型&#xff0c;这种转换称为整型提升。 如何进行整型提升呢&#xff1f; 1. 有符号整数提升是按…

不入耳开放式耳机哪个品牌好?2024年热销榜前五名品牌推荐

为何开放式耳机近年来如此火爆&#xff1f;首先&#xff0c;开放式耳机以其开放式的声学设计&#xff0c;打破了传统耳机的局限&#xff0c;为用户带来了更加自然、宽广的音质体验。其次&#xff0c;随着音乐文化的普及和人们对高品质生活的追求&#xff0c;开放式耳机作为高端…

4.9学习总结

一.File类 (一).概述: File 类的对象代表操作系统的文件&#xff08;文件、文件夹&#xff09;,File 类提供了诸如&#xff1a;创建文件对象代表文件&#xff0c;获取文件信息&#xff08;大小、修改时间&#xff09;、删除文件、创建文件&#xff08;文件夹&#xff09;等功…

HarmonyOS开发实例:【数字管家app】

一&#xff0e;概述 本应用是基于RK3399开发板&#xff0c;使用OpenHarmony3.1-Release开发的应用。通过OpenHarmony的分布式技术&#xff0c;使多人能够一起画画。 1.应用运行效果图&#xff1a; 2.分布式画板使用示意图 如上图所示&#xff0c;用户1、用户2在各自本地端进行…

Stack_经典例题_最小栈

题目&#xff1a; 题目分析&#xff1a; 在满足栈的特点的同时&#xff0c;还需要设计一个接口&#xff0c;就是获取栈内的最小元素&#xff01; 解题思路&#xff1a; 因为是栈&#xff0c;所以不好遍历的&#xff01;所以这题的方式不能采用遍历的方式&#xff0c;如果采取…