我正在尝试使用pymssql从金字塔Web应用程序中使用 存储过程 将二进制数据插入MSSQL数据库。
相应列的MSSQL数据类型为varbinary(max)。
varbinary(max)
我的问题是: 在插入二进制文件之前,MSSQL数据库的varbinary数据类型希望我如何处理它?
这是我一直在尝试的方法:
with open(tmp_file, 'rb') as content_file: filecontent = content_file.read()
…,然后将的值传递filecontent给存储过程。
filecontent
tmp_file在这种情况下,是.png文件的有效路径。
tmp_file
.png
MSSQL db回答以下错误:
*** DatabaseError: (257, 'Implicit conversion from data type varchar to varbinary(max) is not allowed. Use the CONVERT function to run this query.DB-Lib error message 257, severity 16:\nGeneral SQL Server error: Check messages from the SQL Server\n')
我能够将filecontent变量的值插入到SQLite(varbinary列)和MySQL数据库(BLOB列)中,没问题。
varbinary
BLOB
为什么它不能与MSSQL数据库一起使用?
也许您必须显式转换 varchar 。这就是您的错误消息所隐含的含义。
请参阅:http : //social.msdn.microsoft.com/Forums/sqlserver/zh- CN/8f9d772a-4fa2-45b4-9fed-f03c73bd757a/implicit-conversion-from-data-type- varchar-to-varbinary-is-不允许使用转换功能?forum = transactsql
这似乎解决了同样的问题。