pymysql:隐藏我的文件的凭证
pymysql: hide credential of my file
我有以下代码:
from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://edamame:mypassword@1.2.3.4:3306/mydb')
我想隐藏部分:edamame:mypassword@1.2.3.4:3306/mydb
。可能放入另一个未提交回购协议的文件中。
我可以从另一个文件中读取字符串,但我想知道实现此目的的更好做法或设计是什么?谢谢!
是的,这是正确的想法。我喜欢将 yaml 用于基本配置文件,但您可以使用任何您喜欢的格式。如果你使用 yaml,它会是这样的:
使用适当的 read/write/execute 权限在您的存储库之外创建一个 yaml 文件。
database_info:
username: edamame
password: mypassword
host: 1.2.3.4
port: 3306
database: mydb
使用 PyYAML 导入。
import yaml
with open('your/file/path/here/db_config.yaml', 'r') as infile:
db_cfg = yaml.safe_load(infile)
访问变量并填充您的字符串(我通常将其包装在一个函数中):
engine = create_engine(
'mysql+pymysql://{}:{}@{}:{}/{}'.format(
db_cfg['database_info']['username'],
db_cfg['database_info']['mypassword'],
db_cfg['database_info']['host'],
db_cfg['database_info']['port'],
db_cfg['database_info']['database']
)
)
确保您的配置文件不在存储库中并且 directory/file 权限正确。如果您正在构建 Web 应用程序,另一个不错的选择是环境变量。您可以使用 Python 的 os 库访问 ose。
我有以下代码:
from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://edamame:mypassword@1.2.3.4:3306/mydb')
我想隐藏部分:edamame:mypassword@1.2.3.4:3306/mydb
。可能放入另一个未提交回购协议的文件中。
我可以从另一个文件中读取字符串,但我想知道实现此目的的更好做法或设计是什么?谢谢!
是的,这是正确的想法。我喜欢将 yaml 用于基本配置文件,但您可以使用任何您喜欢的格式。如果你使用 yaml,它会是这样的:
使用适当的 read/write/execute 权限在您的存储库之外创建一个 yaml 文件。
database_info: username: edamame password: mypassword host: 1.2.3.4 port: 3306 database: mydb
使用 PyYAML 导入。
import yaml with open('your/file/path/here/db_config.yaml', 'r') as infile: db_cfg = yaml.safe_load(infile)
访问变量并填充您的字符串(我通常将其包装在一个函数中):
engine = create_engine( 'mysql+pymysql://{}:{}@{}:{}/{}'.format( db_cfg['database_info']['username'], db_cfg['database_info']['mypassword'], db_cfg['database_info']['host'], db_cfg['database_info']['port'], db_cfg['database_info']['database'] ) )
确保您的配置文件不在存储库中并且 directory/file 权限正确。如果您正在构建 Web 应用程序,另一个不错的选择是环境变量。您可以使用 Python 的 os 库访问 ose。