You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub托管pyodbc代码时安全隐藏用户名与密码?

避免GitHub代码泄露敏感信息的几种实用方法

给你几个靠谱的方案,适配你的pyodbc + SQL Server开发场景:

1. 用系统环境变量存储敏感信息

把用户名、密码这类敏感数据存在系统环境变量里,代码直接读取变量值,不会把敏感内容写入仓库:

操作步骤:

  • Windows:打开命令提示符执行以下命令(重启VSCode后生效):
    setx DB_USER "yourusername"
    setx DB_PWD "yourpassword"
    
  • Mac/Linux:在终端执行,或者把命令加到~/.bashrc/~/.zshrc里永久生效:
    export DB_USER="yourusername"
    export DB_PWD="yourpassword"
    

修改后的代码:

import pyodbc
import pandas as pd
import os  # 导入os模块读取环境变量

server = 'servername' 
database = 'AdventureWorks' 
username = os.getenv('DB_USER')  # 读取环境变量中的用户名
password = os.getenv('DB_PWD')   # 读取环境变量中的密码

cnxn = pyodbc.connect(f'DRIVER={{SQL Server}};SERVER={server};DATABASE={database};UID={username};PWD={password}')
cursor = cnxn.cursor()

query = "SELECT [CountryRegionCode], [Name] FROM Person.CountryRegion;"
df = pd.read_sql(query, cnxn)
print(df.head(26))

2. 用本地配置文件+Git忽略规则

创建单独的配置文件存放敏感信息,再通过.gitignore让Git忽略这个文件,确保它不会被提交到GitHub:

操作步骤:

  1. 在项目根目录创建config.py文件(也可以用config.json格式):
# config.py
DB_SERVER = 'servername'
DB_NAME = 'AdventureWorks'
DB_USER = 'yourusername'
DB_PWD = 'yourpassword'
  1. 创建或修改项目根目录的.gitignore文件,添加一行:
config.py

(如果用json格式就写config.json)

修改后的代码:

import pyodbc
import pandas as pd
from config import DB_SERVER, DB_NAME, DB_USER, DB_PWD  # 从配置文件导入参数

cnxn = pyodbc.connect(f'DRIVER={{SQL Server}};SERVER={DB_SERVER};DATABASE={DB_NAME};UID={DB_USER};PWD={DB_PWD}')
cursor = cnxn.cursor()

query = "SELECT [CountryRegionCode], [Name] FROM Person.CountryRegion;"
df = pd.read_sql(query, cnxn)
print(df.head(26))

3. 用Windows集成认证(仅限Windows环境)

如果你在Windows系统下开发,且当前登录的系统账号拥有目标SQL Server的访问权限,可以直接用Windows身份认证,完全不用写用户名和密码:

修改后的代码:

import pyodbc
import pandas as pd

server = 'servername' 
database = 'AdventureWorks' 

# 用Trusted_Connection参数替代用户名密码
cnxn = pyodbc.connect(f'DRIVER={{SQL Server}};SERVER={server};DATABASE={database};Trusted_Connection=yes;')
cursor = cnxn.cursor()

query = "SELECT [CountryRegionCode], [Name] FROM Person.CountryRegion;"
df = pd.read_sql(query, cnxn)
print(df.head(26))

内容的提问来源于stack exchange,提问作者Grantx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 22:45:38