gpt4 book ai didi

Python3 pyodbc动态构建更新查询

转载 作者:行者123 更新时间:2023-12-01 01:46:30 24 4
gpt4 key购买 nike

如何动态构建更新查询,其中我要更新的数字和字段名称不同,而不必为每个更新语句设置不同的更新查询。

我是 python 新手,但在其他语言中,我见过它是通过键值对完成的,您可以在其中动态执行以下操作:

UPDATE my_table SET key1 = value1 WHERE key2 = value2

然后,您将一个键值对数组传递给该函数,然后就可以开始了。

在 python 中执行此操作的最佳方法是创建更新字符串并传入字段吗?像这样的东西:

"UPDATE my_table SET {} = ? WHERE {} = ?".format(key1, key2)

那么我猜你必须单独将参数传递给 pyodbc.executemany?

但是我不确定您如何处理要更新的可变数量的字段。我确信有一种方法可以轻松地做到这一点,所以希望有人能告诉我。

最佳答案

是的,使用普通 Python 和 pyodbc,您描述的基本过程是正确的。如果您有要更新的列名称列表

>>> col_names_to_set = ['LastName', 'FirstName']

您可以构建 SET 子句所需的项目,

>>> set_tokens = ','.join([f'{x}=?' for x in col_names_to_set])
>>> set_tokens
'LastName=?,FirstName=?'

将其包含在 SQL 命令文本中,

>>> sql = f"UPDATE TableName SET {set_tokens} WHERE ..."
>>> sql
'UPDATE TableName SET LastName=?,FirstName=? WHERE ...'

然后将该语句以及包含要更新的值的元组列表传递给 executemany

请注意,为了安全起见,您可能应该将列名称括在 SQL 方言的分隔符中,例如,对于 SQL Server (T-SQL):

>>> set_tokens = ','.join([f'[{x}]=?' for x in col_names_to_set])
>>> set_tokens
'[LastName]=?,[FirstName]=?'

关于Python3 pyodbc动态构建更新查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51265805/

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