使用 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]"
我试图创建一个查询循环,它执行从一个实例到下一个实例的交互步骤。获取正确的数据后。
已连接 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]"