Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将MSSQL varbinary转换为base64字符串 目标_Python_Sql Server_Encoding_Jython 2.5 - Fatal编程技术网

Python 将MSSQL varbinary转换为base64字符串 目标

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

将mssql中的数据(图像)转换为base64并嵌入电子邮件中

避蚊胺 我有一个图像,存储在mssql数据库的
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