Python通过读取配置文件开发数据库链接脚本工具(统一封装 mysql,mongodb,redis,达梦,人大进仓等主流国内外数据库)
一.为什么要封装工具使用配置文件管理数据库配置文件
1. 数据持久性与安全性
- 数据持久性:配置文件中的数据在应用程序或系统重启后仍然保留,不会丢失。这对于数据库连接信息(如数据库URL、用户名、密码等)尤为重要,因为它们需要在每次应用程序启动时都被正确加载。
- 安全性:通过将敏感信息(如数据库密码)存储在配置文件中,并适当限制对这些文件的访问权限,可以提高数据的安全性。此外,还可以采用加密技术来保护配置文件中的敏感数据。
2. 灵活性与可维护性
- 灵活性:配置文件允许在不修改代码的情况下更改数据库连接信息或其他配置。这对于在不同环境(如开发、测试和生产环境)中部署应用程序时非常有用,因为可以简单地通过更改配置文件来适应不同的数据库设置。
- 可维护性:当数据库配置发生变化时(如数据库地址更改、密码更新等),只需修改配置文件而无需重新编译或部署应用程序。这大大降低了维护成本和时间。
3. 集中管理与版本控制
- 集中管理:配置文件通常位于项目的特定位置,便于集中管理和查找。这有助于确保所有开发人员和运维人员都使用相同的配置信息。
- 版本控制:将配置文件纳入版本控制系统(如Git)可以跟踪配置文件的更改历史,并在需要时回滚到以前的版本。这有助于解决配置错误或恢复旧配置。
4. 便于测试与部署
- 测试:在测试环境中,可以轻松地更改配置文件以连接到测试数据库,而无需更改代码。这有助于确保测试环境的独立性和准确性。
- 部署:在部署到生产环境时,只需将包含正确数据库连接信息的配置文件部署到生产服务器即可。这简化了部署过程并减少了出错的可能性。
5. 封装工具的优势
- 简化操作:封装工具可以隐藏复杂的数据库连接和配置过程,提供简单的接口供应用程序使用。这降低了开发人员的学习成本并提高了开发效率。
- 提高复用性:通过封装数据库连接和配置的逻辑,可以在多个项目或模块中重用相同的代码和配置,减少了重复劳动。
二.配置文件内容信息 文件名称config.ini
[mysql]
host = 127.0.0.1
user = root
password = 000000
database = dbname
port = 3306
[mongodb]
host = 127.0.0.1
port = 27017
user =
password =
database = name
collection = table
[redis]
host = localhost
port = 6379
db = 10
password = 123456
三.封装工具代码
import configparser
import pymysql
import redis
from pymongo import MongoClient
config = configparser.ConfigParser()
config.read('config.ini')
mysql_config = config['mysql']
def connect_to_mysql():
return pymysql.connect(
host=mysql_config['host'],
user=mysql_config['user'],
port=int(mysql_config['port']),
password=mysql_config['password'],
database=mysql_config['database']
)
def query_mysql(query):
connection = connect_to_mysql()
cursor = connection.cursor()
cursor.execute(query)
result = cursor.fetchall()
cursor.close()
connection.close()
return result
redis_config = config['redis']
def connect_to_redis():
return redis.Redis(
host=redis_config['host'],
db=int(redis_config['db']),
port=int(redis_config['port']),
password=redis_config['password'])
def query_redis(key):
connection = connect_to_redis()
result = connection.get(key)
connection.close()
return result
mongodb_config = config['mongodb']
def connect_to_mongodb():
client = MongoClient(host=mongodb_config['host'],port= int(mongodb_config['port']),username=mongodb_config['user'],password=mongodb_config['password'])
db = client[mongodb_config['database']]
return db
def query_mongodb():
connection = connect_to_mongodb()
db = connection[mongodb_config['collection']]
result = list(db.find({}))
return result
if __name__ == '__main__':
connect_to_mysql()
connect_to_redis()
connect_to_mongodb()
print(query_mongodb())
sql = """select * from file_handle where deleted = 0"""
print(query_mysql(sql))