需求:Python项目中统一配置db信息如,mariadb/redis
因为项目统一使用,所以我把2个数据库信息放到同一个配置文件,分不同group来解析
1.db.conf
cat db.conf
[mysql]
DB_HOST = 172.16.xx.xx
DB_PORT = 3306
DB_USER = es
DB_PWD = xxxxxx
DB_NAME = es
CHARSET = utf8
[redis]
REDIS_HOST = 172.16.xx.xx
REDIS_PORT = 6379
REDIS_PWD = xxxxx
REDIS_DBID = 1
2.解析代码
2.1mariadb
cat db_cfg_mariadb.py
#! /usr/bin/env python
# -*- coding:utf-8 -*-
#====#====#====#====
# __author__ = "Jacson.Bai"
#HomePage:http://blog.youkuaiyun.com/jacson_bai
#QQ:342930411
#FileName: *.py
#Version:1.0.0
#====#====#====#====
import pymysql
import configparser
cf= configparser.ConfigParser()
cf.read('db.conf',encoding='utf-8')
conn = pymysql.connect(
host = cf.get('mysql', 'DB_HOST'),
user = cf.get('mysql', 'DB_USER'),
passwd = cf.get('mysql', 'DB_PWD'),
db = cf.get('mysql', 'DB_NAME'),
port = cf.getint('mysql', 'DB_PORT'),
charset= cf.get("mysql", 'CHARSET'),
)
cur = conn.cursor()
sql="""select * from status"""
cur.execute(sql)
data=cur.fetchall()
print(data)
conn.close()
2.2redis
cat db_cfg_redis.py
import redis
import configparser
cf = configparser.ConfigParser()
cf.read('db.conf', encoding='utf-8')
r1 = redis.Redis(
host=cf.get('redis', 'REDIS_HOST'),
port=cf.getint('redis', 'REDIS_PORT'),
password=cf.get('redis', 'REDIS_PWD'),
db=cf.getint('redis', 'REDIS_DBID'))
r1.set('name2', 'Jacson2')
print(r1.get('name2'))
注意事项:1.不要把db.conf这个文件传到生产环境