首页 > 数据库 >记录一下麒麟3.0内网安装python通过jdbc连接达梦6数据库

记录一下麒麟3.0内网安装python通过jdbc连接达梦6数据库

时间:2024-06-20 16:43:40浏览次数:11  
标签:jdbc python 安装 python2.7 JPype1 local JayDeBeApi 内网

麒麟3.0基于Red Hat 4.1.2-42,此版本可以编译python3.8.3,但是内网无法安装libffi-dev,导致无法安装JPype1和JayDeBeApi,所以改用python2.7.18

1、安装python2.7.18

https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz

# 解压
tar -zxvf Python-2.7.18.tgz
# 切换到新的目录下
cd 2.7.18/
# 执行configure并且设置新python要装在的位置
./configure --prefix=/usr/local/python2
# 清除上次的make命令所产生的object文件(后缀为".o"的文件)及可执行文件
make clean
# 根据Makefile文件编译源代码、连接、生成目标文件、可执行文件
make
# 将编译成功的可执行文件安装到系统目录中,一般为/usr/local/bin目录
make install

2、 安装setuptools-42,JPype1和JayDeBeApi基于该依赖

https://files.pythonhosted.org/packages/ab/41/ab6ae1937191de0c9cbc115d0e91e335f268aa1cd85524c86e5970fdb68a/setuptools-42.0.0.zip

 

# 解压,也可以在windows下解压
uzip setuptools-42.0.0.zip
# 切换到新的目录下
cd setuptools-42.0.0
# 安装
python setup.py install

3、安装JPype1-0.6.3,高版本的JPype1麒麟环境无法编译通过,JayDeBeApi基于JPype1

https://files.pythonhosted.org/packages/c4/4b/60a3e63d51714d4d7ef1b1efdf84315d118a0a80a5b085bb52a7e2428cdc/JPype1-0.6.3.tar.gz

# 解压
tar -zxvf JPype1-0.6.3.tar.gz
# 切换到新的目录下
cd JPype1-0.6.3
# 安装
python setup.py install

4、安装JayDeBeApi-1.2.3

https://files.pythonhosted.org/packages/5c/8c/f27750106bf1fba33f92d83fb866af164179f7046495bc5a61fae26d9475/JayDeBeApi-1.2.3.tar.gz

# 解压
tar -zxvf JayDeBeApi-1.2.3.tar.gz
# 切换到新的目录下
cd JayDeBeApi-1.2.3
# 安装
python setup.py install

5、配置java环境变量,下载JDK,解压导入如下环境变量,JayDeBeApi基于java运行环境

export JAVA_HOME=/usr/local/jdk1.8.0_271 
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
export PATH=${JAVA_HOME}/bin:$PATH

6、测试连接

#导入jaydebeapi
import jaydebeapi
#配置dm数据库链接127.0.0.1是数据库IP,4631是数据库端口,test是数据库名
url = 'jdbc:dm://127.0.0.1:4631/test'
#用户名
user = 'DBA'
#密码
password = 'DBA'
#驱动名,默认
dirver = 'dm.jdbc.driver.DmDriver'
#达梦jdbc驱动,你服务器jar位置
jarFile = '/opt/dmdbms/jar/DmJdbcDriver.jar'
#查询sql语句,tes.test.sys_user是数据库名.模式名.表名
sqlStr = 'select count(1) from test.test.sys_user'
#创建数据库连接,传入参数
conn = jaydebeapi.connect(dirver, url, [user, password], jarFile)
#创建游标
curs=conn.cursor()
#执行sql语句
curs.execute(sqlStr)
#接收执行结果
result=curs.fetchall()
#输出执行结果
print(result)
#关闭游标
curs.close()
#关闭数据库连接
conn.close()

7、遇到的问题

普通用户导入jaydebeapi无此模块,在root用户下可以import,jaydebeapi、JPype1、setuptools安装在/usr/local/python2.7/lib/python2.7/site-packages下,正常权限如下图,本人在另外一台服务安装权限却只有700,导致普通用户下无法导入模块,请检查模块是有访问权限,包括JPype1子目录权限

或者在python代码中导入import,jaydebeapi、JPype1、setuptools的path,这种方法比较麻烦

import sys

sys.path.append('/usr/local/python2.7/lib/python2.7/site-packages/JPype1-0.6.3-py2.7-linux-x86_64.egg')

sys.path.append('/usr/local/python2.7/lib/python2.7/site-packages/JayDeBeApi-1.2.3-py2.7.egg')

sys.path.append('/usr/local/python2.7/lib/python2.7/site-packages/setuptools-42.0.0-py2.7.egg')

最后希望我的文章能给予你思路。

 

标签:jdbc,python,安装,python2.7,JPype1,local,JayDeBeApi,内网
From: https://www.cnblogs.com/jiongSpace/p/18258908

相关文章

  • Centos7升级Python2.7到Python3.10
    在Centos7系统中,默认带的Python版本是Python2.7的,部分新的软件需要升级Python到3.x版本.步骤1、下载Python安装包wgethttps://www.python.org/ftp/python/3.10.1/Python-3.10.1.tgz步骤2、安装Python依赖包yuminstall-ylibffi-devel  yuminstall-yzlib-dev......
  • Python 基础详解:入门宝典(3)
    容器类型介绍:1.列表(List)列表是Python中最常用的数据结构之一,它是一个有序的可变序列,允许存储任意类型的元素。列表用方括号[]表示。特点有序:元素按照插入顺序排列。可变:可以修改元素的值或增加、删除元素。支持重复:可以包含重复的元素。#创建一个列表fruits=['a......
  • Python期末复习题库(下)
    如果你对Python感兴趣,想要学习pyhton,这里给大家分享一份**Python全套学习资料**,都是我自己学习时整理的,希望可以帮到你,一起加油!1.(单选题)下列关于文件打开模式的说法,错误的是(C)。A.r代表以只读方式打开文件B.w代表以只写方式打开文件C.a代表以二进制形式打开......
  • 计算机毕业设计flask+python企业公司进销存管理系统
    1、内容和要求:(1)完成以下课题研究内容:①研究进销存系统相关理论、特征。②研究进销存系统背景和意义。③研究进销存系统现实发展前景。④对企业进销存系统进行需求分析。⑤设计和实现新疆世纪金桥企业进销存系统。⑥对设计的进销存系统进行测试。(2)完成......
  • python之异常捕获&清除的打印报错行
    python代码:importtimeimporttracebackfromthreadingimportThreaddeffun1():fun1_1()deffun2():t=Thread(target=fun2_1())t.start()deffun1_1():print('fun1_1')deffun2_1():1/0defmain():whileTr......
  • python的queue队列获取数据
    一概念Python中的队列(Queue)数据结构提供了get()方法用于获取队列的头部项,而不会删除该项。importqueue#创建一个队列对象q=queue.Queue()#向队列中添加一些元素q.put(1)q.put(2)q.put(3)#获取队列的头部项head=q.get()print("队列的头部项是:",head)......
  • 只听过 Python 做爬虫?不瞒你说 Java 也很强
    网络爬虫技术,早在万维网诞生的时候,就已经出现了,今天我们就一起来揭开它神秘的面纱!一、摘要说起网络爬虫,相信大家都不陌生,又俗称网络机器人,指的是程序按照一定的规则,从互联网上抓取网页,然后从中获取有价值的数据,随便在网上搜索一下,排在前面基本都是pyhton教程介绍。的确,pyhto......
  • JDBC实例:执行遍历查询操作,并打印查询结果
     //导入了Java的SQL包importjava.sql.*;publicclassMain{publicstaticvoidmain(String[]args)throwsException{//注册MySQL的JDBC驱动Class.forName("com.mysql.jdbc.Driver");//连接自己的数据库,我连接了数据库“pinta”St......
  • python-画正方形
    [题目描述]输入一个正整数n,要求输出一个n行n列的正方形图案(参考样例输入输出)。图案由大写字母组成。其中,第1行以大写字母A开头,第2行以大写字母B开头,以此类推;在每行中,第2列为第1列的下一个字母,第3列为第2列的下一个字母,以此类推;特别的,规定大写字母Z的下一个字母为大写字母A。......
  • 基于Python中的tkinter和pygame库创建一个简单音乐播放器
    importosimporttimeimporttkinterastkfromtkinterimportfiledialog,messagebox,ttkimportpygameimportmutagen.mp3#用于获取MP3文件时长classMusicPlayer:def__init__(self,root):pygame.init()self.root=rootsel......