当前位置: 首页 > 面试题库 >

使用python pymssql将二进制文件插入MSSQL db(varbinary)

司空祯
2023-03-14
问题内容

我正在尝试使用pymssql从金字塔Web应用程序中使用 存储过程 将二进制数据插入MSSQL数据库。

相应列的MSSQL数据类型为varbinary(max)

我的问题是: 在插入二进制文件之前,MSSQL数据库的varbinary数据类型希望我如何处理它?

这是我一直在尝试的方法:

with open(tmp_file, 'rb') as content_file:
    filecontent = content_file.read()

…,然后将的值传递filecontent给存储过程。

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列)中,没问题。

为什么它不能与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


这似乎解决了同样的问题。



 类似资料:
  • 问题内容: 我有23位表示为字符串,并且需要将此字符串作为4个字节写入二进制文件。最后一个字节始终为0。以下代码有效(Python 3.3),但感觉不太好(我对Python和编程很陌生)。您有任何改善技巧吗?似乎for循环可能有用,但是如何在循环中进行切片而不出现IndexError?请注意,当我将位提取到一个字节中时,我会反转位顺序。 问题答案: 您可以将其视为int,然后按以下方式创建4个字节

  • 我想以这种形式将短int x=0x4740写入二进制文件:0100 0000 0100 0111,当我在记事本中打开它时,它是@G。它正在工作。当我尝试编写例如短int a=0xf0ff;(二进制:1111 0000 1111 1111)时,记事本显示给我的不是我的数字二进制(➕是1100 1011 1001 1001 1100 0100 1001 0001)。如何在这个文件中编写它并获得1111

  • Example 21.2. Applying a binary plugin build.gradle apply plugin: 'java' 插件可以使用插件ID应用.插件的id作为给定的插件的唯一标识符.核心插件注册一个可以用作插件的id的短名称.在上述情况下,我们可以使用简称java的插件以应用JavaPlugin.社区插件,一方面会使用一个完全合格的形式的插件id(如com.github

  • 一个插件是一个简单的实现了插件接口的类.Gradle提供的核心插件作为其分布的一部分,因此,你需要做的仅仅是应用上述的插件.然而,非核心二进制插件需要到构建类路径才能应用它们.这可以以多种方式,包括以下方式实现: 定义插件作为构建脚本中内嵌类的声明. 定义插件为在项目中buildSrc目录下的一个源文件.(参见Section 62.4, “Build sources in the buildSrc

  • 问题内容: 我有一些从Go程序中读取的文本文件。我想提供一个可执行文件,而无需另外提供该文本文件。如何将其嵌入Windows和Linux上的编译中? 问题答案: 使用go-bindata。从自述文件: 该工具可将任何文件转换为可管理的Go源代码。对于将二进制数据嵌入到go程序中很有用。在转换为原始字节片之前,可以选择对文件数据进行gzip压缩。

  • 问题内容: 这一定很明显,但我无法弄清楚。我为此花了将近一整天。我很乐意给减轻我体重的人买啤酒。 这是我的代码。我看到字节数组大小不合适,但是我找不到正确的大小。除此之外,内容也不是不正确的。似乎只有文字字符可以。 似乎从二进制文件中删除数据确实很痛苦,我真的很沮丧。 还有一件事:文件内容不是文本,可以是图片,视频或pdf之类的东西。 问题答案: 如果你正在读一个二进制文件,你应该 不 尝试把它当