使用 python 在列的基础上为每一行的唯一代码创建新列

Creating new column for unique code for each row on column basis using python

我试图创建一个查询循环,它执行从一个实例到下一个实例的交互步骤。获取正确的数据后。

已连接 python 到 SQL 服务器并返回 table 架构列名称并输入变量。

我在这里尝试为数据库中的每条记录创建 hashbyte 并将列名保存为 hk

我遇到错误:

ProgrammingError: ('42S22', "[42S22] [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name ''COL_NAMES''. (207) (SQLExecDirectW)")

我想要的输出是列名,因为 hk 应该保存在数据库中,并且所有行都有一个唯一的代码,因为

所以您已经有了列名列表...

>>> COL_NAMES = ['ID', 'NAME', 'Date']  # sample data

... 并且您可以使用列表理解将它们插入到 lower(isnull(... 片段中,然后使用加号将它们连接在一起 ...

>>> s = '+'.join([f"lower(isnull(convert(nvarchar(255),[{x}]), ''))" for x in COL_NAMES])
>>> s
"lower(isnull(convert(nvarchar(255),[ID]), ''))+lower(isnull(convert(nvarchar(255),[NAME]), ''))+lower(isnull(convert(nvarchar(255),[Date]), ''))"

... 然后将其插入 SQL 语句的其余部分

>>> sql = f"SELECT HASHBYTES('MD5', {s}) as hk, * INTO [dbo].[ABCD_A] FROM [dbo].[ABC_A]"
>>> sql
"SELECT HASHBYTES('MD5', lower(isnull(convert(nvarchar(255),[ID]), ''))+lower(isnull(convert(nvarchar(255),[NAME]), ''))+lower(isnull(convert(nvarchar(255),[Date]), ''))) as hk, * INTO [dbo].[ABCD_A] FROM [dbo].[ABC_A]"