Python连接MySQL时如何创建并导入自定义模块隐藏敏感凭据
实现方案
1. 编写自定义数据库模块
首先在项目目录下新建mysql_utils.py文件,统一封装数据库连接逻辑和敏感凭据:
import pymysql # 所有敏感配置统一存放在该模块内部,不对业务代码暴露 MYSQL_CONFIG = { "database": "byt", "user": "root", "password": "admin", "host": "localhost", "port": 3306 } def get_db_connection(autocommit=False): """ 返回MySQL连接对象和游标对象 可通过autocommit参数设置是否自动提交事务 """ conn = pymysql.connect(**MYSQL_CONFIG, autocommit=autocommit) cursor = conn.cursor() return conn, cursor
如果使用Git做版本管理,直接把mysql_utils.py加入.gitignore文件,避免敏感配置被提交到远程仓库。
2. 业务代码导入调用
在你的业务代码文件中直接导入上述模块的函数即可使用,不需要再写任何敏感凭据:
from mysql_utils import get_db_connection # 直接调用获取连接和游标 db_new1, cursor_new1 = get_db_connection() # 后续正常执行SQL操作即可 # 示例:cursor_new1.execute("SELECT VERSION()") # 操作完成后记得关闭资源 # cursor_new1.close() # db_new1.close()
可选进阶优化
如果不想把凭据直接写在Python模块文件里,可以配合.env配置文件实现完全解耦:
- 先安装依赖库:
pip install python-dotenv - 项目根目录新建
.env文件,写入所有敏感配置:MYSQL_DB=byt MYSQL_USER=root MYSQL_PWD=admin MYSQL_HOST=localhost MYSQL_PORT=3306 - 修改
mysql_utils.py代码,从.env读取配置:import pymysql import os from dotenv import load_dotenv # 加载.env文件配置 load_dotenv() MYSQL_CONFIG = { "database": os.getenv("MYSQL_DB"), "user": os.getenv("MYSQL_USER"), "password": os.getenv("MYSQL_PWD"), "host": os.getenv("MYSQL_HOST"), "port": int(os.getenv("MYSQL_PORT")) } def get_db_connection(autocommit=False): conn = pymysql.connect(**MYSQL_CONFIG, autocommit=autocommit) cursor = conn.cursor() return conn, cursor - 把
.env文件加入.gitignore,这种方式的优势是配置和代码完全分离,mysql_utils.py本身可以正常提交到版本仓库。
内容的提问来源于stack exchange,提问作者Yan
相关产品推荐
相关产品推荐

