首页 > 解决方案 > 在 SSIS 包 w Python 脚本中使用变量/参数

问题描述

我创建了一个包来执行以下操作:

截断暂存表 -> 运行 Python 脚本(这会从填充暂存表的 API 中提取数据)-> 运行 3 个执行 SQL 任务以将最近 5 天的数据从暂存转移到生产

我想做的是:

创建参数/变量以允许某人更改 URL、用户名和密码以在 SSMS 中进行编辑。我对 Python 和 SSIS 还很陌生,所以我真的不知道自己在做什么;但是,这是我希望拥有变量的代码行。

rTotal = requests.get('https://jira.tpp.company.com/rest/zapi/latest/zql/executeSearch?zqlQuery=creationDate%20>%3D%20startOfDay(-5d)&offset=0&maxRecords=1', auth=HTTPBasicAuth(uid, pwd) , verify=False).json()

我该怎么做呢?对于 URL,我不知道这样做是否会更好: 'https://jira.tpp.company.com/rest/zapi/latest/zql/executeSearch?zqlQuery=' + @[User: :url] 如果那甚至你会怎么做。对于 uid 和 pwd,我可以创建像 @[User::uid] & @[User::pwd] 这样的变量/参数来替换 uid 和 pwd 吗?我需要将它包装在任何东西中或在某个地方定义它吗?

提前感谢您提供的任何帮助。

标签: pythonsql-serverparametersssispackage

解决方案


我假设您将此脚本作为执行进程任务执行,在 Executable 字段中包含 python.exe 的路径,在 Arguments 字段中包含脚本本身的路径。

没有内置方法可以像使用 C# 或 VB 脚本任务那样使 Python 脚本可以使用 SSIS 变量,但是您可以在 Arguments 字段的末尾传递它们,然后使用 sys.argv 作为如果它们是命令行参数。

将变量添加到 Arguments 的方式是在 Execute Process Task Editor 窗口的 Expressions 选项卡中:

  1. 在该选项卡上,有一个“杂项”标题和一个空白表达式字段。单击该字段,将显示“...”按钮。点击那个

  2. 在出现的新窗口中,选择 Arguments 作为 Property,然后单击此窗口的 Expression 字段中的“...”

  3. 在这里,您需要使用 SSIS 表达式语法设置参数,包括文件路径和要传入的变量。请注意,您需要在每个之前使用 \ 转义 "s 和 \s。您正在拍摄这样的东西:

    "\"C:\\your_file_path_here\\your_script.py\" \"" + @[User::url] + "\" " + @[User::uid] + " " + @[User::pwd]
    

    您可能还需要引用您的 UID/PW 字段,具体取决于它们中允许的字符。

设置完成后,这些变量将像任何其他命令行参数一样传递到您的脚本中。您可以在脚本顶部添加“import sys”,并使用 sys.argv[0] 作为 URL,使用 sys.argv[1] 作为 UID,使用 sys.argv[2] 作为 PW。


推荐阅读