如何将 df 作为表值参数传递,并且一旦 df 使用该更新作为 TPV 传递或在 SQL Server 中插入输出表

问题描述

作为项目开发活动的一部分,我需要更新或插入输出表。我试图在存储过程中将 DF 作为表值参数传递。通过使用存储过程,我想实现这一点。有人可以在这里帮助我吗?

我有 33 列的 DF。它有 varcharnvarcharintsmallintfloatdatetime 列。

例如,我按照这里提到的方式进行了尝试 - https://www.sqlshack.com/table-valued-parameters-in-sql-server/ created,table,type table and procedure 如上面的链接所示。但唯一的区别是 INSERTING 的 INSTEAD 作为我试图从 DF 传递的声明。

示例 DF 如下。

data = {'No':[1,2,3],'Name':['A','B','C','D']}

df=pd.DataFrame(data)

将 DF 更改为列表 -> 链接中的元组 -> Is it possible to pass values to a table type parameter from PYODBC to SQL Server?

rec= df.to_records(index=False)
param=[tuple(rec)]
query="{call Usp_InsertLessonMemOpt (?) }"

**PYODBC connection**

cursor=py_con.cursor()
cursor.execute(query,param)
py_con.commit()
py_con.close()

错误 : ('HY003','[HY003] [Microsoft] [ODBC Driver Manager] 程序类型超出范围 (0) (sqlBindParametr)')

如果我尝试使用 turbodbc

运行时错误错误!列参数不受支持的类型标识符_1 NULLABLE UNKNowN TYPE (precision 0,scale 0))

使用:用于 sql Server 和 python 3.7.9 的 ODBC 驱动程序 13

提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)