Python编写数据库备份程序的一些经验-20210201

一边是全民学python的技术浪潮,一边是部门对python实现数据库备份功能的迫切需求,当二者交织在一起时,我知道是我学习与输出的时候了。

<<<预先说明>>>
虽然这是写python的第一遍文章,但在这里我并不想写一篇Python基础入门的教程类文章,不想去分享我是如何入门Python的,现在来写一些在使用它实现功能需求过程中的一些心得感悟。

Python编写数据库备份程序的一些经验-20210201_第1张图片

<<<实践过程记录>>>
在我编码实现功能的过程中,有70%的时间都在调整运行环境,记录如下:

  • 2021-01-19 与同事讨论并优化需求逻辑;
  • 2021-01-20 创建数据库与表,并配置windwos平台的python3环境;
  • 2021-01-21 在pycharm中完成第一部分编码(生成当日备份任务),并持久化数据;
  • 2021-01-22 编码第二部分功能(执行备份任务)时,发现win与lin平台的系统命令不同,如获取磁盘空间大小,于是开始停下来思考“同步生产环境”的原则,开始转linux平台。
  • 2021-01-23至29 在python环境安装的路上各种报错与各种倒腾,包括现有py3缺少bz标准库、卸载并重装py3、安装第三方依赖库、调试程序运行环境
  • 2021-02-01 解决环境问题,能正式跑写的功能脚本了。
  • 2021-02-xx 上线生产环境

<<<经验积累>>>
之所以会遇到各种问题,是因为对python开发项目没有一个系统性的认知。在编码之前,没有弄清楚一些语法之外的东西,比如:

  1. 完整python安装方式是怎样的?
  2. 脚本类python项目在linux上如何配置运行环境?

如果事先完成了1,就不会遇到缺少各种标准库的问题了,毛估计至少能节约2.5天的开发时间;如果事先完成了2,就不会出现找不到某某模块与属性等问题了,毛估计至少能节约2天的开发时间;

依靠Google,解决这种环境依赖问题并不能给我带来多少技术提升,并不知道这其中的原理,也不需要知道,所以,让开发只专注于编码是多么重要的事情呀!

接下来计划读一读《流畅的python》这本书,豆瓣评分挺高的,9.4分。
Python编写数据库备份程序的一些经验-20210201_第2张图片
<<<技术文档分享>>>

一、经验分享:
1、不推荐在windows系统上测试,费时费力不讨好,就算测试好了也不能保证与生产环境一致,因为生产环境是linux。
2、请一定要先确定环境正常,环境包括python语言环境、标准依赖库,第三方依赖库,项目运行环境。

二、环境依赖:
(1)安装python环境
1、挂载58软件包:
mkdir -p /python3_install_lib
mount 109.0.14.58:/appm/appmdata/rd开发项目/predict预测/基于python3.6的安装库 /python3_install_lib

2、安装标准依赖库
cd /python3_install_lib/rpm
rpm -ivh *.rpm --nodeps --force

3、安装python
cp /python3_install_lib/Python-3.6.1.tar /usr/local
cd /usr/local
tar -xf Python-3.6.1.tar
cd Python-3.6.1
./configure --prefix=/usr/local/python3 
make 
make install

make报错操作方法:
报错:
Fatal Python error: Py_Initialize: Unable to get the locale encoding
LookupError: unknown encoding: GBK
修改系统编码为UTF-8:
vi /etc/profile
source /etc/profile

4、创建软连接
rm /usr/bin/python3
rm /usr/bin/pip3
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3


(2)安装第三方依赖库
cd /python3_install_lib
pip3 install PyMySQL-1.0.2-py3-none-any.whl
pip3 install Cython-0.29.21-cp36-cp36m-manylinux1_x86_64.whl
pip3 install SQLAlchemy-1.3.17-cp36-cp36m-manylinux1_x86_64.whl
pip3 install python_dateutil-2.8.1-py2.py3-none-any.whl
pip3 install pytz-2020.1-py2.py3-none-any.whl
pip3 install six-1.15.0-py2.py3-none-any.whl
pip3 install pycparser-2.20-py2.py3-none-any.whl
pip3 install numpy-1.19.5-cp36-cp36m-manylinux1_x86_64.whl
pip3 install pandas-1.1.5-cp36-cp36m-manylinux1_x86_64.whl
pip3 install cx_Oracle-8.1.0-cp36-cp36m-manylinux1_x86_64.whl
如还需要其他的包使用pip3安装

(3)项目运行
1、上传iris项目,如/home/sysop/iris
2、将项目路径加到系统路径
echo '/home/sysop/iris' > /usr/local/python3/lib/python3.6/site-packages/.pth
3、安装oracle客户端
4、运行py
su - oracle
cd /home/sysop/iris
python3 iris/service/ServiceBackUpOra.py


(4)报错参考
1、安装_bz2:
将_bz2上传至/usr/local/lib/python3.6/lib-dynload
cd /usr/lib64
ln -sf libbz2.so.1.0.6 libbz2.so.1.0
		
2、没法连接oracle数据库
AttributeError: 'OracleHelper' object has no attribute 'conn'
需要提前安装oracle客户端,运行py脚本需切换到oracle用户,不然无法连接oracle数据库

3、指定pip3中的python3路径
-bash: /usr/local/bin/pip3: /usr/local/bin/python3.6: bad interpreter: 没有那个文件或目录
which pip3
/usr/local/bin/pip3
which python3
/usr/bin/python3
vi /usr/local/bin/pip3
第一行修改为#!/usr/bin/python3

你可能感兴趣的:(智能运维,python)