python 动态渲染 mysql 配置文件的示例


Posted in Python onNovember 20, 2020

背景

前段时间写了一个自动化安装 MySQL 的程序,其中有一个环节就是动态的渲染 my.cnf 文件;总的解决方案就是像 Django 渲染 html 页面一样,用渲染模板的方式来解决。

[mysqld]
basedir = {{basedir}}
datadir = {{datadir}}
port  = {{port}}
user  = {{user}}

python 动态渲染 mysql 配置文件的示例

代码实现

我在渲染引擎的选择上使用了 jinja2 这个模板引擎,去掉其它逻辑一个最小化的代码如下。

#!/usr/bin/env python3

from jinja2 import Environment,FileSystemLoader

def render_mysql_config_file():
  #通过文件系统加载器,加载当前目录下的 my.cnf.jinja 模板文件
  env = Environment(loader=FileSystemLoader(searchpath='./'))
  tmpl = env.get_template('my.cnf.jinja')
  #给要渲染的参数指定值
  cnfs = {
    'basedir': '/usr/local/mysql/',
    'datadir': '/database/mysql/data/3306/',
    'port': 3306,
    'user'; 'mysql3306'
  }

  tmpl.globals=cnfs
  #不保存到 /etc/my.cnf 了,直接输出到 stdout
  print(tmpl.render())

if __name__ == "__main__":
  render_mysql_config_file()

运行效果如下

python3 cnfs.py
[mysqld]
basedir = /usr/local/mysql/
datadir = /database/mysql/data/3306/
port  = 3306
user  = mysql3306

总结

通过模板引擎渲染 my.cnf 只要专参数就行了,非常的方便。

以上就是python 动态渲染 mysql 配置文件的示例的详细内容,更多关于python 动态渲染配置文件的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python 文件和输入输出小结
Oct 09 Python
Python中用altzone()方法处理时区的教程
May 22 Python
python写日志封装类实例
Jun 28 Python
Python的包管理器pip更换软件源的方法详解
Jun 20 Python
Python模块搜索路径代码详解
Jan 29 Python
python模拟表单提交登录图书馆
Apr 27 Python
Python中print和return的作用及区别解析
May 05 Python
Python可变和不可变、类的私有属性实例分析
May 31 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
Sep 20 Python
python3中利用filter函数输出小于某个数的所有回文数实例
Nov 24 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
Feb 05 Python
Keras多线程机制与flask多线程冲突的解决方案
May 28 Python
Python paramiko使用方法代码汇总
Nov 20 #Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
Nov 20 #Python
python使用requests库爬取拉勾网招聘信息的实现
Nov 20 #Python
python爬取天气数据的实例详解
Nov 20 #Python
python爬取招聘要求等信息实例
Nov 20 #Python
python爬虫判断招聘信息是否存在的实例代码
Nov 20 #Python
Python getsizeof()和getsize()区分详解
Nov 20 #Python
You might like
PHP批量生成缩略图的代码
2008/07/19 PHP
PHP 全角转半角实现代码
2010/05/16 PHP
PHP获取http请求的头信息实现步骤
2012/12/16 PHP
php 读取文件头判断文件类型的实现代码
2013/08/05 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
2014/10/24 PHP
PHP内置的Math函数效率测试
2014/12/01 PHP
PHP5.3新特性小结
2016/02/14 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
2019/10/11 PHP
jquery tools之tooltip
2009/07/25 Javascript
Mootools 1.2 手风琴(Accordion)教程
2009/09/15 Javascript
用javascript读取xml文件读取节点数据
2014/08/12 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
jQuery判断元素是否显示 是否隐藏的简单实现代码
2016/05/19 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
JS中的phototype详解
2017/02/04 Javascript
使用MUI框架模拟手机端的下拉刷新和上拉加载功能
2017/09/04 Javascript
JQ图片文件上传之前预览功能的简单实例(分享)
2017/11/12 Javascript
vue-cli2.9.3 详细教程
2018/04/23 Javascript
jQuery中将json数据显示到页面表格的方法
2018/05/27 jQuery
vue服务端渲染缓存应用详解
2018/09/12 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
2019/07/26 Javascript
python中stdout输出不缓存的设置方法
2014/05/29 Python
python简单实现刷新智联简历
2016/03/30 Python
python实现中文转换url编码的方法
2016/06/14 Python
python使用两种发邮件的方式smtp和outlook示例
2017/06/02 Python
浅谈python函数调用返回两个或多个变量的方法
2019/01/23 Python
python区分不同数据类型的方法
2019/10/14 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
2020/01/10 Python
10个示例带你掌握python中的元组
2020/11/23 Python
Pycharm Plugins加载失败问题解决方案
2020/11/28 Python
Original Penguin美国官网:布拉德皮特、强尼德普喜爱的服装品牌
2016/10/25 全球购物
领导班子四风对照检查材料范文
2014/09/27 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
Java 超详细讲解设计模式之中的抽象工厂模式
2022/03/25 Java/Android
win10键盘驱动怎么修复?Win10键盘驱动修复小技巧
2022/04/06 数码科技