试验目的:Windows主机仅安装Pycharm,远程连接Linux服务器中的达梦数据库(以虚拟机CentOS7版代替)做数据报表。
试验环境:
目录
一、试验环境准备
1. Windows主机下载Pycharm2023.2
2. 安装Linux版Python-3.9.8
3. 下载达梦数据库镜像和ODBC驱动包
4. 创建共享文件夹
二、过程封装
三、执行安装脚本
1. 创建安装执行脚本
2. 执行统一安装
3. 脚本具体命令来源
四、连接DM8做报表
1. windows主机安装Pycharm2021.3.2
2. Pycharm连接虚拟机
3. 编辑Pychrm的环境变量配置
4. 报表制作
下载安装过程略:下载链接如下
https://download.jetbrains.com.cn/python/pycharm-professional-2021.3.2.exehttps://download.jetbrains.com.cn/python/pycharm-professional-2021.3.2.exe
安装过程略:下载链接如下
https://www.python.org/ftp/python/3.9.8/Python-3.9.8.tgzhttps://www.python.org/ftp/python/3.9.8/Python-3.9.8.tgz
达梦8数据库下载链接:
https://package.dameng.com/eco/adapter/DM8/dm8_20210818_x86_rh7_64_ent.ziphttps://package.dameng.com/eco/adapter/DM8/dm8_20210818_x86_rh7_64_ent.zip
ODBC驱动安装包链接:
链接:(提取码:pc30)https://pan.baidu.com/s/1E5BBUT0r5S3uNMrDAJhzHA http://xn--odbc-y39fht109btjp3z2fbtzaksm
VMware16虚拟机上创建共享文件夹用于上传文件(也可以下载一个XShell或Xftp等常用的远程上传文件工具)
开启虚拟机-->点击虚拟机-->设置-->选项-->共享文件-->总是开启-->添加-->添加上主机的共享文件夹的位置-->确定;
虚拟机中创建共享文件夹:(共享文件夹建议建立在与虚拟机同一文件夹下),执行以下命令:
[root@test ~]# mkdir -p /mnt/share
[root@test ~]# vmhgfs-fuse .host:/share /mnt/share
虚拟机环境中的/mnt/share目录里的文件就能与主机中的共享文件夹共享文件了,可以通过共享文件上传文件;
(1)将Python-3.9.8安装包Python-3.9.8.tgz和达梦数据库镜像的.bin文件、ODBC包(可略过)通过共享文件上传到虚拟机里,并将这些安装包转移到上一级的/mnt目录下,否则脚本无法正常成功执行;
[root@test ~]# mv /mnt/share/* ..
(2)创建安装环境脚本
安装脚本准备:为了能快速安装,直接上脚本,此脚本可实现对安装环境过程的封装(不用单独执行);
[root@test ~]# vim /mnt/process.sh
添加以下内容:
#!/bin/bash
########################################### 安装前的环境准备 ##############################################
echo "#!/bin/bash
groupadd dinstall
echo '成功创建dinstall用户组'
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
echo '成功创建dmdba用户'
read -p '请输入dmdba用户的密码:' pw
" > /tefile/env1.sh
echo 'echo $pw | passwd --stdin dmdba' >> /tefile/env1.sh
echo "
echo '设置dmdba用户密码成功!!'
id dmdba
# 规划安装目录;
mkdir -p /dm8
chown -R dmdba:dinstall /dm8
echo '创建DM安装目录成功!!'
# 修改限制资源的大小;
echo '
dmdba soft nofile 102400
dmdba hard nofile 102400
root soft nofile 102400
root hard nofile 102400
' >> /etc/security/limits.conf
echo '修改资源大小成功!!'
" >> /tefile/env1.sh
############################################ 安装达梦数据库 ################################################
# dmdba用户执行安装DM数据库脚本;
echo "#!/bin/bash
ulimit -n
sleep 1
(/mnt/DMInstall.bin -i && echo '请输入exit继续执行脚本')
" > /tefile/dminst2.sh
############################################ 初始化数据实例 ###############################################
echo "#!/bin/bash
su - dmdba < /tefile/dminit3.sh
############################################ 注册数据库服务 ###############################################
echo "#!/bin/bash
echo '注册数据库服务'
cd /dm8/script/root
./dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini /dm8/data/DAMENG/dm.ini
" > /tefile/rootin4.sh
############################################# 启动数据库服务 ##############################################
echo "#!/bin/bash
su - dmdba -c '(/dm8/bin/DmServiceDMSERVER start || (echo '启动失败';exit 0))'
echo '启动数据库服务'
" > /tefile/start5.sh
############################################# 创建SQL文件 #################################################
echo "------------------------------------------- 归档 -------------------------------------------------------
-- 开启归档;
alter database mount;
alter database add archivelog 'type=local,dest=/dm8/arch,file_size=64,space_limit=1024';
alter database archivelog;
alter database open;
commit;
" > /tefile/gd1.sql
# 查看归档信息;
echo '
SELECT * FROM V$DM_ARCH_INI; -- 查看归档信息;
SELECT ARCH_MODE FROM V$DATABASE; -- 查看归档是否开启;
--------------------------------------------------------------------------------------------------------
' >> /tefile/gd1.sql
echo "------------------------------------------------ 数据文件 -------------------------------------------------
-- 兼容性设置为:兼容Oracle;
SP_SET_PARA_VALUE(2,'COMPATIBLE_MODE',2);
-- 创建表空间;
CREATE TABLESPACE TBS DATAFILE
'/dm8/data/DAMENG/TBS01.dbf' SIZE 64,
'/dm8/data/DAMENG/TBS02.dbf' SIZE 64
CACHE=NORMAL;
-- 修改数据文件的大小;
-- ALTER TABLESPACE TBS RESIZE DATAFILE '/dm8/data/DAMENG/TBS01.dbf' TO 100;
-- 创建用户;
CREATE USER QIQI IDENTIFIED BY QIQI12345
DEFAULT TABLESPACE TBS
DEFAULT INDEX TABLESPACE TBS;
-- 创建角色;
CREATE ROLE DMQIQI ;
-- 权限管理;
GRANT CREATE ANY TABLE,CREATE ANY VIEW,CREATE INDEX,SELECT ANY TABLE TO DMQIQI;
-- 赋权;
GRANT DMQIQI TO QIQI;
COMMIT ;
-- 创建2021年全国各省份GDP信息表;
CREATE TABLE QIQI.PRO_GDP
(
GDP_ID INTEGER NOT NULL,
GDP_2021_WY NUMBER(12,6),
GDP_2020_WY NUMBER(12,6),
CLUSTER PRIMARY KEY(GDP_ID)
)
STORAGE(ON TBS , CLUSTERBTR) ;
COMMENT ON TABLE QIQI.PRO_GDP IS '2021年全国各省份GDP信息表';
-- 全国省份信息表;
CREATE TABLE QIQI.CHINPRO
(
PID INTEGER NOT NULL,
PRONAME VARCHAR2(21),
ABBREVIATION VARCHAR2(21),
AREA_WKM2 NUMBER(12,6),
POPULATION_W NUMBER(12,6),
GDP_ID INTEGER,
CLUSTER PRIMARY KEY(PID),
CONSTRAINT GDP_ID
FOREIGN KEY(GDP_ID) REFERENCES QIQI.PRO_GDP(GDP_ID)
)
STORAGE(ON TBS, CLUSTERBTR) ;
COMMENT ON TABLE QIQI.CHINPRO IS '全国省份信息表';
COMMIT ;
-- 插入信息;
INSERT INTO QIQI.PRO_GDP VALUES
(01,12.43,11.08),(02,11.64,10.27),
(03,8.31,7.31),(04,7.35,6.46),
(05,5.89,5.50),(06,5.39,4.86),
(07,5.00,4.34),(08,4.88,4.39),
(09,4.61,4.18),(10,4.32,3.87),
(11,4.30,3.87),(12,4.04,3.62),
(13,4.03,3.61),(14,2.98,2.62),
(15,2.96,2.57),(16,2.79,2.50),
(17,2.76,2.51),(18,2.71,2.45),
(19,2.47,2.22),(20,2.26,1.77),
(21,2.05,1.74),(22,1.96,1.78),
(23,1.60,1.38),(24,1.57,1.41),
(25,1.49,1.37),(26,1.32,1.23),
(27,1.02,0.9),(28,0.65,0.55),
(29,0.45,0.39),(30,0.33,0.30),
(31,0.20,0.19),(32,2.37,2.37),
(33,0.19,0.14),(34,5.00,4.58);
INSERT INTO QIQI.CHINPRO VALUES
(01,'北京','京',1.7,2189,13),(02,'天津','津',1.1,1387,24),
(03,'河北','冀',18.8,7461,12),(04,'山西','晋',15.6,3492,20),
(05,'内蒙古','内蒙古',118.3,2405,21),(06,'辽宁','辽',14.6,4259,17),
(07,'吉林','吉',18.7,2407,26),(08,'黑龙江','黑',47.3,3185,25),
(09,'上海','沪',0.6,2487,10),(10,'江苏','苏',10.3,8475,02),
(11,'浙江','浙',10.2,6457,04),(12,'安徽','皖',14,6103,11),
(13,'福建','闽',12.1,4154,08),(14,'江西','赣',16.7,4519,15),
(15,'山东','鲁',15.4,10100,03),(16,'河南','豫',16.7,9937,05),
(17,'湖北','鄂',18.6,5775,07),(18,'湖南','湘',21.1,6645,09),
(19,'广东','粤',18,12600,01),(20,'广西','桂',23.6,5013,19),
(21,'海南','琼',3.4,1008,28),(22,'重庆','渝',8.2,3205,16),
(23,'四川','川',48.1,8367,06),(24,'贵州','黔',17.6,3856,22),
(25,'云南','滇',38.3,4721,18),(26,'西藏','藏',122.8,365,31),
(27,'陕西','陕',20.6,3953,14),(28,'甘肃','陇',45.4,2502,27),
(29,'青海','青',72.2,592,30),(30,'宁夏','宁',6.6,720,29),
(31,'新疆','新',166,2585,23),(32,'香港','港',0.1,709,32),
(33,'澳门','澳',0.003,55,33),(34,'台湾','台',3.6,2316,34);
COMMIT ;
------------------------------------- 查询信息 --------------------------------------------------------------
-- 查看表空间信息;
select TABLESPACE_NAME from DBA_TABLESPACES where TABLESPACE_NAME='TBS';
-- 查看数据文件路径;
SELECT FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE FROM DBA_DATA_FILES WHERE TABLESPACE_NAME='TBS';
-- 查看创建的DMQIQI角色的信息;
SELECT ROLE FROM DBA_ROLES WHERE ROLE='DMQIQI';
-- 查看QIQI模式下的表;
SELECT TABLE_NAME,OWNER FROM DBA_TABLES WHERE OWNER='QIQI';
-- 查看表结构;
desc QIQI.PRO_GDP ;
desc QIQI.CHINPRO ;
-- 查看创建的表信息;
SELECT * FROM QIQI.CHINPRO;
SELECT * FROM QIQI.PRO_GDP;
-------------------------------------------------------------------------------------------------------------
" > /tefile/data2.sql
############################################## 数据库备份 ################################################
echo "--------------------------------------- 联机备份 --------------------------------------------------------------
-- 更新归档检查点;
checkpoint(100); -- 联机备份更新归档检查点;
-- 联机全量备份;
backup database full to FULL_2022 backupset '/dm8/backup/FULL_2022';
-- 联机增量备份;
-- backup database increment to INCR_2022 backupset '/dm8/backup/INCR_2022';
-- 联机累积增量备份;
-- backup database increment cumulative to CUMU_2022 backupset '/dm8/backup/CUMU_2022';
-- 表空间备份:
-- backup tablespace TBS full to TBSFULL backupset '/dm8/backup/TBSFULL';
------------------------------------------- 定时备份作业 ------------------------------------------------------
-- 创建备份作业开关:相当于DM管理工具中的创建代理环境;
-- SP_INIT_JOB_SYS(1); -- 值为0是关闭,值为1是开启;
-- 定时备份策略:周日22:00做全备,周一到周六的22:00做增备;
-- call SP_CREATE_JOB('job01',1,0,'',0,0,'',0,'周日22:00做全备');
-- call SP_JOB_CONFIG_START('job01');
-- call SP_JOB_SET_EP_SEQNO('job01', 0);
-- call SP_ADD_JOB_STEP('job01', 'bf01', 6, '00000000/dm8/backup', 0, 0, 0, 0, NULL, 0);
-- call SP_ADD_JOB_SCHEDULE('job01', 'bfjob1', 1, 2, 1, 1, 0, '22:00:00', NULL, '2022-05-01 18:00:00', NULL, '');
-- call SP_JOB_CONFIG_COMMIT('job01');
-- call SP_DROP_JOB('job01'); -- 删除作业job01;
-- call SP_CREATE_JOB('job02',1,0,'',0,0,'',0,'周一到周六的22:00做增备');
-- call SP_JOB_CONFIG_START('job02');
-- call SP_ADD_JOB_STEP('job02', 'cumbf1', 6, '00000000/dm8/backup', 0, 0, 0, 0, NULL, 0);
-- call SP_ADD_JOB_SCHEDULE('job02', 'cumjob', 1, 2, 1, 126, 0, '22:00:00', NULL, '2022-05-01 18:00:00', NULL, '');
-- call SP_JOB_CONFIG_COMMIT('job02');
-- call SP_DROP_JOB('job02'); -- 删除作业job02;
" > /tefile/bf3.sql
echo '-- 查看备份信息;
SELECT BACKUP_NAME,PKG_SIZE,BAKSET_TYPE FROM V$BACKUPSET;
--------------------------------------------------------------------------------------------------------------------
commit;
exit
' >> /tefile/bf3.sql
################################################ 导入SQL文件 #############################################
echo "#!/bin/bash
cd /dm8/bin
echo '请按顺序依次导入以下sql文件:
start /tefile/gd1.sql
start /tefile/data2.sql
start /tefile/bf3.sql
'
sleep 2
(./disql SYSDBA/Dameng123:5238||exit 0)&&(echo '请输入exit继续执行脚本'||exit 0)
" > /tefile/expsql6.sh
########################################## 达梦数据库开发部分 ############################################
# 安装配置ODBC;
echo '#!/bin/bash
cd /mnt
tar -zvxf unixODBC-2.3.0.tar.gz
cd unixODBC-2.3.0/
(./configure || exit 0) && (make || exit 0) && (make install || exit 0)
odbcinst -j
# 配置odbcinst.ini文件
read -p "请输入odbcinst.ini配置文件目录( /usr/local/etc/odbcinst.ini ):" odbcinst
echo "
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /dm8/bin/libdodbc.so
" > $odbcinst
# 配置odbc.ini文件
read -p "请输入odbc.ini配置文件目录( /usr/local/etc/odbc.ini ):" odbc
echo "
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = Dameng123
TCP_PORT = 5238
" > $odbc
' > /tefile/odbc.sh
# 安装配置dmPython;
echo "#!/bin/bash
# 规划安装目录和解压安装包;
mkdir -p /app/pyfile
mv /mnt/Python-3.9.8.tgz /app
cd /app
tar -zvxf Python-3.9.8.tgz
# 安装gcc编译组件和
(yum -y install gcc automake autoconf libtool make||(echo '失败!';exit 0))&&(yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel||(echo '失败!';exit 0))
# 编译安装;
cd /app/Python-3.9.8
(./configure --prefix=/app/Python-3.9.8||(echo '失败!';exit 0))&&(make && make install||(echo '失败!';exit 0))
# 建立软连接;
ln -s /app/Python-3.9.8/bin/python3.9 /usr/bin/python3
ln -s /app/Python-3.9.8/bin/pip3.9 /usr/bin/pip3
# 安装matplotlib库;
python3 -m pip install matplotlib
" > /tefile/Python.sh
# 完成安装python;
# <--- 添加系统环境变量 --->
# <--- 添加用户环境变量 --->
# 编译安装dmPython库;
echo "
# 编译安装dmPython库;
cd /dm8/drivers/python/dmPython/
python3 setup.py install
# 查看安装情况;
pip3 list
" > /tefile/dmPython.sh
此shell脚本主要将安装过程进行封装,执行后会自动生成达梦数据库安装脚本,包括添加环境,还会生成安装ODBC配置脚本和安装Python与编译dmPyhton的过程脚本;此过程脚本不需要单独执行,会在下面的执行脚本中自动执行,生成一大堆的子过程脚本,由执行脚本统一执行,包括生成此次试验所需要的 sql 文件,在下面执行时按系统提示将 sql 文件导入达梦数据库即可。
此执行脚本是将上面已经生成的过程脚本进行集中执行,实现快速安装,全过程只需按系统提示输入执行的命令即可完成本次试验的所有环境安装;
[root@test ~]# vim /mnt/execute.sh
将以下内容添加进脚本:
#!/bin/bash
echo '
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 欢迎进入达梦数据库安装系统!! @
@ Welcome to DM8 database installation system!! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
注:请按提示进行安装操作。(Note follow the prompts to install the action.)
使用说明:安装目录为/dm8,数据库名称:DAMENG,实例名:DMSVR,实例安装目录:/dm8/data,数据库端口号:5238
'
# 创建测试目录和数据库文件目录;
mkdir -p /tefile
sh /mnt/process.sh||(exit 0;echo '执行失败!!')
chmod +x /tefile/*
echo '达梦数据库安装环境准备!!'
sleep 3
sh /tefile/env1.sh||(exit 0;echo '执行失败!!')
chown -R dmdba:dinstall /tefile/*
# 安装DM8数据库;
read -p '是否安装达梦数据库?(Y/y or N/n or 回车跳过):' str1
case $str1 in
'Y'|'y')
echo '请用dmdba用户执行安装脚本:sh /tefile/dminst2.sh'
sleep 2
su - dmdba
;;
'N'|'n')
echo '再见!!'
exit 0
;;
*) # default
echo '跳过!!'
;;
esac
# 注册开启DMAP服务;
echo '请按系统提示,使用root用户运行脚本,如:/dm8/script/root/root_installer.sh'
read -p '请输入:' dmap
$dmap
echo 'export PATH=$PATH:/dm8/bin' >> /home/dmdba/.bash_profile
source /home/dmdba/.bash_profile
# 初始化数据库实例;
read -p '是否进行初始化数据库实例?(Y/y or N/n or 回车跳过):' str2
case $str2 in
'Y'|'y')
sh /tefile/dminit3.sh||(exit 0;echo '失败!')
echo '初始化数据库实例成功!!'
;;
'N'|'n')
echo '再见!!'
exit 0
;;
*) # default
echo '跳过!!'
;;
esac
# 注册数据库服务;
read -p '是否进行注册数据库服务?(Y/y or N/n or 回车跳过):' str3
case $str3 in
'Y'|'y')
sh /tefile/rootin4.sh||(exit 0;echo '失败!')
echo '注册数据库服务成功!!'
;;
'N'|'n')
echo '再见!!'
exit 0
;;
*) # default
echo '跳过!!'
;;
esac
# 启动数据库服务;
read -p '是否启动数据库服务?(Y/y or N/n or 回车跳过):' str4
case $str4 in
'Y'|'y')
sh /tefile/start5.sh||(exit 0;echo '失败!')
echo '启动数据库服务成功!!'
;;
'N'|'n')
echo '再见!!'
exit 0
;;
*) # default
echo '跳过!!'
;;
esac
# 导入数据文件;
read -p '是否导入数据(Y/y or N/n or 回车跳过):' str5
case $str5 in
'Y'|'y')
echo '请执行脚本: sh /tefile/expsql6.sh'
sleep 1
su - dmdba
;;
'N'|'n')
echo '再见!!'
exit 0
;;
*) # default
echo '跳过!!'
;;
esac
sleep 2
echo '####################################### 进入达梦数据库开发部分 !!####################################'
# 安装配置ODBC;
read -p '是否安装配置ODBC?(Y/y or N/n or 回车跳过):' str6
case $str6 in
'Y'|'y')
sh /tefile/odbc.sh||(exit 0;echo '失败!')
echo '安装配置ODBC成功!!'
;;
'N'|'n')
echo '再见!!'
exit 0
;;
*) # default
echo '跳过!!'
;;
esac
# 安装配置dmPython;
read -p '是否安装配置dmPython?(Y/y or N/n or 回车跳过):' str7
case $str7 in
'Y'|'y')
sh /tefile/Python.sh||(exit 0;echo '失败!')
# <--- 添加系统环境变量 --->
echo 'export PATH=$PATH:/app/Python-3.9.8/bin' >> /etc/profile
source /etc/profile
# 查看Python的版本;
python3 --version
# <--- 添加用户环境变量 --->
echo '
DM_HOME=/dm8
export DM_HOME
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin
' >> /root/.bash_profile
source /root/.bash_profile
# 编译dmPython;
sh /tefile/dmPython.sh||(exit 0;echo '失败!')
echo '安装配置dmPython成功!!'
;;
'N'|'n')
echo '再见!!'
exit 0
;;
*) # default
echo '跳过!!'
;;
esac
############################################# 删除脚本 ###################################################
echo '
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 安装完毕!!您已经成功安装了达梦8数据库 @
@ Installation complete!! @
@ You have successfully installed the DM8 database @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'
# 查看容量信息:
echo '空间容量查看:'
du -hd0 /dm8 /app /mnt /tmp
du -hd0 /dm8/backup
du -hd0 /dm8/arch
df -h
# 将备份sql文件移动到备份目录下:
mv /tefile/bf3.sql /dm8/backup
# 清除安装临时目录
rm -rf /app/Python-3.9.8.tgz
rm -rf /tefile
rm -rf /mnt/*.sh # 脚本自毁;
exit 0
脚本/mnt/execute.sh使用说明:执行前,建议先对虚拟机做个快照,以便在执行出错后能快速回到初始状态;执行后,只需按系统提示进行操作即可,安装达梦数据库部分输入安装目录为/dm8,其他的,安装配置ODBC驱动,如果不需要可按系统提示,按回车跳过即可,安装python-3.9.8和编译dmPyhton等等操作,系统也是会自动执行;
如果这两个脚本是在windows编写完成,上传到共享文件里,在运行脚本时会报bash损坏的错误,原因是windows文件复制到linux中的格式会变,输入以下命令即可解决:(进入脚本所在的目录/mnt下执行)
[root@test mnt]# sed -i 's/\r$//' *.sh
[root@test ~]# chmod +x /mnt/*.sh
[root@test ~]# bash /mnt/execute.sh
达梦数据库具体的安装步骤请参考下面的博文,本文不再赘述:
达梦数据库单机安装(CentOS7版)_world of qiqi的博客-CSDN博客_centos安装达梦数据库总体流程:用ssh终端,连接上虚拟机;用远程连接工具如XShell、WinSCP等,将CentOS7版DM8镜像文件挂载至虚拟机里;在虚拟机里创建dmdba用户组,创建dm8文件夹,将DM8数据库安装路径放到这里;安装好后,配置环境变量,初始化实例,再后台启动数据库服务,能成功进入到disql工具,就算是完成了.https://blog.csdn.net/weixin_61894388/article/details/122712105?spm=1001.2014.3001.5502安装Python和python连接达梦数据库的具体操作,请参考博文下面的博文,本文不再赘述:
Python连接DM8数据库_world of qiqi的博客-CSDN博客总体流程:安装python3.7.0,并安装编译工具gcc;python安装成功后,在root的环境变量中,在LD_LIBRARY_PATH变量添加上DM8数据库的动态库dpi的路径,如果没有安装DM8,只想连接其他服务器上的DM8数据库,从DM8服务器端,将动态库dpi上传到python端,并将dpi改名为bin,将dpi中的include目录移到与bin同一目录下,修改环境变量后,便可编译dmPython。https://blog.csdn.net/weixin_61894388/article/details/123490980?spm=1001.2014.3001.5502
安装过程略过,可参考博文:PyCharm专业版 2021.3 & Anaconda安装教程_筱白Sec的博客-CSDN博客_pycharm专业版安装教程2021PyCharm 2021.3 & Anaconda安装教程https://blog.csdn.net/qq_46700234/article/details/122369450
点击文件-->设置;
python解释器-->SSH解释器-->填入主机IP和用户名(root)-->下一个-->输入密码-->下一个;
选择虚拟机里的python解释器目录(/usr/bin/python3)-->选择远程路径(/app/pyfile)-->完成;
最终显示此页面即表示已经成功连接上虚拟机里的python了,里面有我们已经安装的dmPython库,它是决定能否连接达梦数据库的关键;
连接上虚拟机里的python解释器后,检查是有dmPython和matplotlib库, 这两个库都属于第三方库,python本身不自带,在上述的/mnt/process.sh和/mnt/execute.sh这两个脚本里,已经加上了相关的安装程序,所以在此操作下,只需要检查即可;如果matplotlib库没有安装成功,可以在Pycharm中打出matplotlib的字样,点中安装即可。
检验Pyharm是否已连接上虚拟机的python的操作:工具-->部署-->配置;
点击测试连接,显示连接成功即可;
此过程如果没有配,在虚拟机的终端能成功运行代码,在Pycharm调用终端也能成功运行代码,而在Pycharm中执行代码时就会报类似于找不到如:libdm*.so文件的错误!!所以编辑配置此环境变量是绝定能否在Pycharm中利用matplotlib制作报表的关键;
配置用户环境变量加上LD_LIBRARY_PATH,值为/dm8/bin,其余的变量及变量值默认即可;
Pycharm端创建一个python文件,输入以下代码:(创建的python文件也会同步到虚拟机对应的/app/pyfile目录中);
本文选择制作一个与我国各省份基本信息相关的柱状图为例,按系统提示输入达梦数据库的用户名(SYSDBA),密码(Dameng123),主机名IP(192.168.222.207),端口号(5238)再输入y轴显示的值,土地面积或者人口,即可显示各个省份的简称及对应的土地面积或人口信息:
#!/usr/bin/python
# coding:utf-8
import dmPython
import matplotlib.pyplot as plt
plt.rc("font",family = "AR PL UMing CN") # 图表显示中文字符;
plt.rcParams["axes.unicode_minus"] = False # 显示图表中的负数值;
try:
us = input('用户名:')
pw = input('密码:')
ip = input('主机名IP:')
pt = input('端口号:')
conn = dmPython.connect(user = us, password = pw, server = ip, port = pt)
cursor = conn.cursor()
################################## 柱状图 ########################################
try:
# 查询数据
cursor.execute("select ABBREVIATION from QIQI.CHINPRO")
rex = cursor.fetchall()
lx=[]
for a in rex:
for b in a:
lx.append(b)
print(lx)
while 1 == 1 :
c1 = input('请输入查询列(土地面积/人口):')
if c1 == '土地面积' :
c1 = 'AREA_WKM2'
break
elif c1 == '人口' :
c1 = 'POPULATION_W'
break
else:
print('请按提示输入!!')
cursor.execute("select " + c1 + " from QIQI.CHINPRO")
rey = cursor.fetchall()
ly=[]
for c in rey:
for d in c:
f = eval(d)
ly.append(f)
print(ly)
except (dmPython.Error, Exception) as err:
print(err)
conn.close()
except (dmPython.Error, Exception) as err:
print(err)
if c1 == 'AREA_WKM2' :
plt.ylabel('面积/万平方千米',fontsize=15)
plt.title('全国各省份土地面积统计数据\n', fontsize = 20)
elif c1 == 'POPULATION_W' :
plt.ylabel('人口/万', fontsize = 15)
plt.title('全国各省份人口统计数据\n', fontsize = 20)
else :
print('请按提示输入!!')
x = lx
y = ly
plt.xlabel('省份简称', fontsize = 15)
# plt.figure(figsize = (45, 45),dpi = 80) # 设置图表大小和柱状间距;
# plt.xticks(fontsize = 50) # 设置x轴字体的大小
plt.bar(x,y)
plt.show()
可以打开Pycharm自带的终端,切换到dmdba用户,进入任意目录下,执行以下命令即可用ODBC驱动连接达梦数据库:
[dmdba@test mnt]$ isql dm8 -v
连接上库后,输入查询语句检验数据与图表的信息是否一致:
SQL> select ABBREVIATION,AREA_WKM2,POPULATION_W from QIQI.CHINPRO;
如想制作其他更加酷炫的图表,可自行查看有关教程,利用已有的省份信息表QIQI.CHINPRO(各省简称,土地面积,人口)和各省份GDP信息表QIQI.PRO_GDP(2021年各省GDP,2020年GDP)进行数据可视化,将我国各省份现状以图表形式展现出来。
下面是全过程的演示:注意虚拟机要能联网,不然不能正常安装pip和matplotlib库;
Pycharm连接DM8做数据分析
更多资讯请上达梦技术社区了解: https://eco.dameng.com