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

news2024/11/25 10:29:53

文章目录

  • 前言
  • 一、搭建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 addpackage
      exec(line)
    File "<string>", line 1, in <module>
    File "D:\python385\lib\site-packages\dpi.py", line 2
      os.add_dll_directory(r'd:\dmdbms\bin')
      ^
  IndentationError: unexpected indent

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

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

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

去除相应的空格

总结

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

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

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

相关文章

【机器学习300问】65、为什么Sigmoid和Tanh激活函数会导致梯度消失?

一、梯度消失现象 当神经网络的输入值较大或较小时&#xff0c;其导数&#xff08;梯度&#xff09;都会接近于0。在反向传播过程中&#xff0c;这些微小的梯度经过多层网络逐层传递时&#xff0c;会不断被乘以权重矩阵&#xff08;权重通常小于1&#xff09;&#xff0c;进一步…

2024人工智能与机器人系统国际学术会议(ICAIRS2024)

2024人工智能与机器人系统国际学术会议(ICAIRS2024) 会议简介 2024人工智能与机器人系统国际学术会议(ICAIRS2024)将在杭州举行。该会议旨在为人工智能和机器人系统的专家学者提供一个平台&#xff0c;以分享最新的研究成果、交流思想、探讨学术问题&#xff0c;并促进跨学科…

Open CASCADE学习|求曲面的参数空间

在三维空间中&#xff0c;任意的曲面都可以通过特定的方法映射到一个二维参数平面上&#xff0c;从而对其进行详细的几何分析和处理。首先&#xff0c;我们需要从三维模型中提取出特定的曲面&#xff0c;这通常被称为“Face”。一个face可以被视为三维空间中的一个封闭区域&…

【c++】c++线程库的基本使用

&#x1f4bb;文章目录 &#x1f4c4;前言C线程库创建线程互斥量mutexlock_guardunique_lock 同步机制condition_variableC20 信号量 的工作原理。 &#x1f4d3;总结 &#x1f4c4;前言 在C线程库推出之前&#xff0c;如果要实现跨平台多线程&#xff0c;那么我们就得需要直到…

Vue3报错:‘defineProps‘ is not defined no-undef

解决方法 在package.json中添加 "vue/setup-compiler-macros": true 记得在上面的 "node": true 后面加一个逗号 "eslintConfig": {"root": true,"env": {"node": true,"vue/setup-compiler-macros": t…

虚拟网络设备性能优化

在现代网络架构中&#xff0c;虚拟网络设备扮演着越来越重要的角色&#x1f310;&#xff0c;特别是在云计算☁️和容器化技术&#x1f4e6;广泛应用的背景下。虚拟网络设备如虚拟以太网设备&#xff08;veth&#xff09;、虚拟交换机&#xff08;vSwitch&#xff09;、和虚拟路…

Vue.js 过渡

过渡 Vue 在插入、更新或者移除 DOM 时&#xff0c;提供多种不同方式的应用过渡效果。 Vue 提供了内置的过渡封装组件&#xff0c;该组件用于包裹要实现过渡效果的组件。 语法格式&#xff1a; <transition name "nameoftransition"><div></div&…

广度优先搜索--什么是“BFS”?为什么要用队列实现?--走迷宫代码详细注释

目录 什么是“DFS”什么是“BFS”为什么要用队列&#xff1f;举例&#xff08;走迷宫&#xff09;&#xff1a; 什么是“DFS” DFS 全称是 Depth First Search&#xff0c;中文名是深度优先搜索&#xff0c;是一种用于遍历或搜索树或图的算法。 深度优先&#xff0c;就是每次…

uni-admin初始化一直提示未初始化数据库问题

uni-admin初始化&#xff0c;一直提示&#xff1a; “检测到您未初始化数据库&#xff0c;请先右键uni-admin项目根目下的 uniCloud/database 目录&#xff0c;执行初始化云数据库&#xff0c;否则左侧无法显示菜单等数据” 最后清除了localStorage&#xff0c;发现就好了。

【MySQL】数据操作语句(DML)

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习计网、mysql和算法 ✈️专栏&#xff1a;MySQL学习 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac…

2.Spring 核心与设计思想

文章目录 1.Spring 是什么&#xff1f;1.1 什么是容器&#xff1f;1.2 什么是 IoC&#xff1f;1.2.1 传统程序开发1.2.2 控制反转式程序开发1.2.3 对比总结规律 1.3 理解 Spring IoC1.4 DI 概念说明 2.总结2.总结 大家好&#xff0c;我是晓星航。今天为大家带来的是 Spring核心…

vue3从精通到入门18:依赖注入Provide / Inject

provide 和 inject 是一对用于实现依赖注入的 API。provide 选项允许父组件向其所有子组件提供一个依赖&#xff0c;无论组件层次结构有多深&#xff0c;只要在其后代组件中使用 inject 选项&#xff0c;就可以访问到这个依赖。 父组件 (ParentComponent.vue) <template>…

抖音评论ID提取工具|视频关键词评论批量采集软件

抖音评论ID提取工具&#xff1a;批量抓取抖音评论 抖音评论ID提取工具是一款功能强大的软件&#xff0c;可以帮助您批量抓取抖音视频下的评论信息。通过输入关键词和评论监控词&#xff0c;即可进行评论的抓取&#xff0c;并提供评论昵称、评论日期、评论内容、命中关键词以及所…

C++笔记(函数重载)

目录 引入&#xff1a; 定义&#xff1a; 易错案例&#xff1a; 引入&#xff1a; 对于实现相似功能的函数&#xff0c;在命名时&#xff0c;我们常会出现命名重复的问题。对于C语言&#xff0c;编译器遇到这种命名重复的情况&#xff0c;会进行报错。而我们的C为了更方便程…

[23年蓝桥杯H题] 合并石子

问题描述 在桌面从左至右横向摆放着 N 堆石子。每一堆石子都有着相同的颜色&#xff0c;颜 色可能是颜色 0 &#xff0c;颜色 1 或者颜色 2 中的其中一种。 现在要对石子进行合并&#xff0c;规定每次只能选择位置相邻并且颜色相同的两堆 石子进行合并。合并后新堆的相对位置保…

Python对docx文本一些操作

文本要是docx结尾 安装 Python-docx 包 读取word from docx import Document doc Document("c:/word22.docx") 获取word中的所有表格 from docx import Document doc Document("c:/word22.docx") doc.tables # 返回所有表格的list 获取表格中的总行…

2022年蓝桥杯省赛——直线

目录 题目链接&#xff1a;11.直线 - 蓝桥云课 (lanqiao.cn) 题目描述 思路 代码思路如下 代码实现 坑来喽~~ 导致这个BUG的原因&#xff01;&#xff01;&#xff01; 总结 整体的 两种b的情况对比数据 题目链接&#xff1a;11.直线 - 蓝桥云课 (lanqiao.cn) 题目描…

Linux LVM磁盘扩容

1、查看磁盘情况 df -h df -h2、查看逻辑卷 lvdisplay lvdisplay3、查看逻辑组 vgdisplay vgdisplay4、查看物理卷 pvdisplay pvdisplay5、查看磁盘 fdisk -l fdisk -l6、磁盘分区fdisk /dev/磁盘名 # 上一步查看到的新硬盘路径 fdisk /dev/vdb7、格式化磁盘mkfs -t ext4…

移除chromeDriver脚本文件

#!/bin/bash process_namechromedriver process_name2webdriver #查找并杀死进程名 PIDps -ef |grep $process_name|grep -v grep|awk {print $2}|xargs PID2ps -ef |grep $process_name2|grep -v grep|awk {print $2}|xargs save_file"/usr/local/software/ship/sadmin/…