如何为连接Azure Cosmos DB的Flask应用传递环境变量并测试?
搞定Flask环境变量配置与Windows运行测试的完整指南
嘿,作为Python新手能想到用环境变量管理敏感信息,这点做得超棒!我来一步步帮你解决配置和运行的问题:
一、先给你的代码做个小优化(避免踩坑)
你现在直接用os.environ['connectionstring']的话,如果环境变量没设置,程序会直接崩溃。改成下面的写法更健壮,还能帮你快速排查问题:
import os from flask import Flask from azure.storage.table import TableService, Entity APP = Flask(__name__) APP.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # 用os.getenv读取,第二个参数是默认值,还加了空值检查 connectionstring = os.getenv('AZURE_COSMOS_CONNECTION_STRING', '') if not connectionstring: raise ValueError("快设置AZURE_COSMOS_CONNECTION_STRING环境变量呀!") @APP.route('/getdata') def view_registered_guests(): print("进入方法啦") table_service = TableService(connection_string=connectionstring) table_name = 'tablebasics' entity = table_service.get_entity(table_name, 'Harp', '2') print(entity['email'], entity['phone']) return f"Email: {entity['email']} 手机号: {entity['phone']}" if __name__ == '__main__': APP.run(debug=True)
我把环境变量名改成了更规范的AZURE_COSMOS_CONNECTION_STRING,避免和其他变量重名,同时加了空值检查,启动时没设置变量会直接提示,不用瞎猜哪里出问题。
二、Windows命令行设置环境变量
临时设置(只在当前cmd窗口有效)
打开cmd,直接输入:
set AZURE_COSMOS_CONNECTION_STRING="你的Azure Cosmos DB连接字符串"
注意:连接字符串里的特殊字符不用转义,直接复制粘贴就行。
永久设置(重启电脑后依然有效)
如果不想每次打开cmd都重新设置,可以搞成永久的:
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在「用户变量」(只对你当前账号生效)或者「系统变量」(所有账号生效,需管理员权限)里点击「新建」
- 变量名填
AZURE_COSMOS_CONNECTION_STRING,变量值粘贴你的连接字符串,点确定保存 - 重启cmd窗口,环境变量就生效啦
三、Windows命令行运行和测试Flask应用
第一步:安装依赖
先确保你装了需要的包,打开cmd输入:
pip install flask azure-storage-table
第二步:运行Flask应用
假设你的代码文件名叫app.py:
- 如果用代码里的
APP.run()启动,直接输入:
python app.py
- 或者用Flask官方命令,先设置入口文件:
set FLASK_APP=app.py flask run
启动成功后,你会看到类似「Running on http://127.0.0.1:5000/」的提示。
第三步:测试API
两种方式都可以:
- 打开浏览器,直接访问
http://localhost:5000/getdata,就能看到返回的邮箱和手机号啦 - 用curl命令(如果你的Windows装了curl),在cmd里输入:
curl http://localhost:5000/getdata
四、提前为Docker化做准备(给你提个醒)
既然你后续要容器化,现在可以先做两个小准备:
- 创建
requirements.txt文件,把依赖列清楚:
flask>=2.0.0 azure-storage-table>=2.1.0
- 写Dockerfile的时候,可以用
ENV指令设置默认环境变量,或者运行容器时用-e参数传入(更安全,避免把敏感信息写到镜像里):
FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . # 这里只是设个空默认,运行容器时再传真实值 ENV AZURE_COSMOS_CONNECTION_STRING="" CMD ["python", "app.py"]
运行容器时传入环境变量的命令是:
docker run -e AZURE_COSMOS_CONNECTION_STRING="你的连接字符串" -p 5000:5000 你的镜像名称
这样从本地配置到运行测试,再到后续Docker化的准备就都搞定啦!
内容的提问来源于stack exchange,提问作者user3541321
相关产品推荐
相关产品推荐

