gpt4 book ai didi

python - 多次传递此变量的有效方法

转载 作者:太空宇宙 更新时间:2023-11-03 15:40:11 25 4
gpt4 key购买 nike

我在 Python 中使用 Pyodbc 来运行一些 SQL 查询。我正在处理的实际上比这更长,但这个例子捕捉到了我正在尝试做的事情:

connection = pyodbc.connect(...)
cursor = connection.cursor(...)

dte = '2018-10-24'

#note the placeholders '{}'
query = """select invoice_id
into #output
from table1 with (nolock)
where system_id = 'PrimaryColor'
and posting_date = '{}'

insert into #output
select invoice_id
from table2 with (nolock)
where system_id = 'PrimaryColor'
and posting_date = '{}'"""

#this is where I need help as explained below
cursor.execute(query.format(dte, dte))

output = pd.read_sql("""select *
from #output"""
, connection)

在上面,因为只有两个 '{}',我将 dte 传递给 query.format() 两次.但是,在我使用的更复杂的版本中,我有 19 个 '{}',所以我想这意味着我需要将 'dte' 传递给'query.format{}' 19 次。我尝试将其作为列表传递,但没有用。将变量传递给函数时,我真的需要将变量写出 19 次吗?

最佳答案

考虑使用UNION ALL 查询来避免临时表需求和parameterization您设置 qmark 占位符的位置,并在后续步骤中将值绑定(bind)到它们。相同的值将参数列表/元组乘以所需的数量:

dte = '2018-10-24'

# NOTE THE QMARK PLACEHOLDERS
query = """select invoice_id
from table1 with (nolock)
where system_id = 'PrimaryColor'
and posting_date = ?

union all

select invoice_id
from table2 with (nolock)
where system_id = 'PrimaryColor'
and posting_date = ?"""

output = pd.read_sql(query, connection, params=(dte,)*2)

关于python - 多次传递此变量的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52975112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com