sp_executesql 无法在数据块中工作 - pyodc

问题描述 投票:0回答:1

下面是我的示例数据块代码,其中 ACTUAL_TABLE 和 TEST_TABLE 是 SQL 表。

我正在尝试使用 pyodc 连接从数据块中的 TEST_TABLE 插入 ACTUAL_TABLE。

mssql_db.sql
是我的连接,连接按预期工作。代码执行没有任何错误,但没有向表中插入任何数据。看起来
sp_executesql
不能在数据块上工作。

V_SQL='INSERT INTO dbo.ACTUAL_TABLE(NAME,GENDER) SELECT ZNAME,GENDER from dbo.TEST_TABLE'
mssql_db.sql(f"""begin declare @V_SQL NVARCHAR(MAX); 
begin
set @V_SQL=N'{V_SQL}'
EXECUTE sp_executesql @V_SQL;
end
end""")

有没有其他方法可以满足这个要求。我只想从数据块中插入它。

我还尝试在 SQL 中创建过程并从数据块调用该过程,即使这不起作用。

sql-server pyodbc azure-databricks sp-executesql
1个回答
0
投票

按照以下方法,我根据您的要求在我的环境中重现相同的东西。

这是我的演示表

ACTUAL_TABLE1
.

enter image description here

现在,您可以查看连接到SQL服务器的Azure Databricks

代码:

import pyodbc
server = 'dem123.database.windows.net'
database = 'pool123'
username = 'xxxx'
password = 'xxxx'
    
conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=' + server + ';DATABASE='+ database +';UID=' + username + ';PWD='+ password)

cursor = conn.cursor()
sql = 'INSERT INTO dbo.ACTUAL_TABLE1 (NAME, GENDER) SELECT ZNAME, GENDER FROM dbo.TEST_TABLE'

cursor.execute(sql)

conn.commit()
conn.close()

enter image description here

使用上面的代码成功执行并将数据插入到 ACTUAL_TABLE1 中:

输出:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.