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,它会是这样的:

  1. 使用适当的 read/write/execute 权限在您的存储库之外创建一个 yaml 文件。

    database_info:
        username: edamame
        password: mypassword
        host: 1.2.3.4
        port: 3306
        database: mydb
  2. 使用 PyYAML 导入。

    import yaml
    with open('your/file/path/here/db_config.yaml', 'r') as infile:
        db_cfg = yaml.safe_load(infile)
  3. 访问变量并填充您的字符串(我通常将其包装在一个函数中):

    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。