【问题标题】:Stop Python from Converting Blob from SQL Server阻止 Python 从 SQL Server 转换 Blob
【发布时间】:2018-03-17 11:50:12
【问题描述】:

我正在尝试将 pdf 作为 blob 从 sql server 移动到 hbase。当我使用 pypyodbc 检索 blob 时,它正在转换其格式。在 SQL Server 中看起来像

0x255044462D312E

但是当我使用 pypyodbc 将其拉入 unix 服务器时,它会被转换为

%PDF-1.5 %▒▒▒▒

有没有办法防止这种情况发生并让二进制文件保留其原始形式?

pypy 调用是:

sql_conn = pypyodbc.connect("DRIVER={ODBC Driver 13 for SQL Server};SERVER="+server+";UID="+user+";PWD="+passwrd+";DATABASE=DB") 
cursor = sql_conn.cursor()
cursor.execute("SELECT Id,IMG_DESCRIPTION,binary FROM [DB].[dbo].[DB] WHERE Id IN "+join_list)
return cursor.fetchall()

更新:

它看起来像在 SQL 服务器中用 Latin-1 解码,但是当我尝试移动它时,它是由 python 编码的。看起来 ascii 是 python 的默认值。我需要防止这种情况发生或将其编码回来。

【问题讨论】:

    标签: python sql-server blob


    【解决方案1】:

    我找到了解决此问题的方法并想分享。

    他们构建 python 2.7 的方式试图通过将它看到的任何二进制字符串转换为 ascii 来提供帮助。为了防止这种情况发生,您可以将您的字段转换为 SQL 本身中的字符串以防止转换。您还可以在开头切断“0x”以确保它不会被识别为二​​进制字符串。

    我的固定电话

    cursor.execute("SELECT Id,IMG_DESCRIPTION,convert(varchar(max),binary,2) FROM [DB].[dbo].[DB] WHERE Id IN "+join_list)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-18
      • 2010-11-28
      • 2013-08-07
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      • 1970-01-01
      • 2018-05-08
      相关资源
      最近更新 更多