Python 将MSSQL varbinary转换为base64字符串 目标
将mssql中的数据(图像)转换为base64并嵌入电子邮件中 避蚊胺 我有一个图像,存储在mssql数据库的Python 将MSSQL varbinary转换为base64字符串 目标,python,sql-server,encoding,jython-2.5,Python,Sql Server,Encoding,Jython 2.5,将mssql中的数据(图像)转换为base64并嵌入电子邮件中 避蚊胺 我有一个图像,存储在mssql数据库的varbinary列中 0xFFD8FFE00.... 另一方面,我正在查询一个古老的Jython环境,因为这是我所能访问的全部 当我查询和打印时,我似乎得到一个有符号的字节数组或字符(可能?) 另一个线程建议将其转储到b64编码器中 import base64 encoded = base64.b64encode(queryResult) 这给了我一个错误TypeError:b2a
varbinary
列中
0xFFD8FFE00....
另一方面,我正在查询一个古老的Jython环境,因为这是我所能访问的全部
当我查询和打印时,我似乎得到一个有符号的字节数组或字符(可能?)
另一个线程建议将其转储到b64编码器中
import base64
encoded = base64.b64encode(queryResult)
这给了我一个错误TypeError:b2a_base64():无法将第一个参数强制为String
该线程还提到将其转换为json,但由于我使用的是Python 2.4语言,因此我无法访问import json
或import simplejson
。在这里使用json解释器对我来说似乎是个大难题
我还尝试在SQL端将其转换为解压缩
并转换为xml
,这两种方法都不起作用。这些图像作为电子邮件附件传递时工作正常,所以据我所知,它们没有损坏。要将它们嵌入html模板中,我需要将Base64字符串取出
我错过了一些东西,我没有经常用这些东西来解决它。我知道有符号/无符号,endian在高水平,但我不能完全破解这个螺母
将列值从VARBINARY转换为Base64
在大多数情况下,我们需要处理表中的多行,并且只希望将VARBINARY数据转换为BASE64字符串。基本解决方案与上面相同,除了使用XMLXQuery的解决方案,我们只需要使用不同的方法
选项1:使用JSON将二进制文件转换为Base64
select Id,AvatarBinary
from openjson(
(
select Id,AvatarBinary
from AriTestTbl
for json auto
)
) with(Id int, AvatarBinary varchar(max))
GO
选项2:使用XML XQuery将二进制文件转换为Base64
select Id,
cast('' as xml).value(
'xs:base64Binary(sql:column("AriTestTbl.AvatarBinary"))', 'varchar(max)'
)
from AriTestTbl
GO
选项3:使用XML和提示“for XML path”将二进制文件转换为Base64
希望这有帮助……对于T-SQL,请参阅。@Dan Guzman我在那里尝试了许多方法,但还没有成功。仍在处理一些示例。提到的TechNet文章是一个简单易懂的示例的热门垃圾。这个简单的示例适用于我:
SELECT CAST(N''为XML)。value('xs:base64Binary(xs:hexBinary(sql:column(“YourBinaryColumn”))),'VARCHAR(MAX)'Base64EncodingData FROM dbo.YourTable代码>
select Id,
cast('' as xml).value(
'xs:base64Binary(sql:column("AriTestTbl.AvatarBinary"))', 'varchar(max)'
)
from AriTestTbl
GO
select Id,AvatarBinary,s
from AriTestTbl
cross apply (select AvatarBinary as '*' for xml path('')) T (s)
GO