问题描述
作为项目开发活动的一部分,我需要更新或插入输出表。我试图在存储过程中将 DF 作为表值参数传递。通过使用存储过程,我想实现这一点。有人可以在这里帮助我吗?
我有 33 列的 DF。它有 varchar
、nvarchar
、int
、smallint
、float
和 datetime
列。
例如,我按照这里提到的方式进行了尝试 - 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 (将#修改为@)