从MSSQL获取二进制值并在python中选择获取的值

从MSSQL获取二进制值并在python中选择获取的值,python,sql-server,database,escaping,binary-data,Python,Sql Server,Database,Escaping,Binary Data,我需要从TableA中获取一个用binary20表示的值,将其保存到变量sha1_-bin,并将其传递给另一个函数,该函数使用所述sha1_-bin从TableB中检索信息 当我获取二进制值时,例如,从TableA中获取第一个SHA1二进制20 它看起来像:b'\xa3\x13\xa4\xcb\xda\x1b\x1b,Ut\xde\xeb2\xb5\x84\xe5&\x85;' 最后,当我使用这个值从TableB检索信息时,例如一些字符串 con.execute_query('SELECT [n

我需要从TableA中获取一个用binary20表示的值,将其保存到变量sha1_-bin,并将其传递给另一个函数,该函数使用所述sha1_-bin从TableB中检索信息

当我获取二进制值时,例如,从TableA中获取第一个SHA1二进制20

它看起来像:b'\xa3\x13\xa4\xcb\xda\x1b\x1b,Ut\xde\xeb2\xb5\x84\xe5&\x85;'

最后,当我使用这个值从TableB检索信息时,例如一些字符串

con.execute_query('SELECT [name] FROM TableB WHERE [SHA1] = '+ str(sha1_bin))

for row in con:
    set_of_names.add(row['name'])
我得到这个错误:

102, b"Incorrect syntax near '\\xa3\\x13\\xa4;\\xcb\\xda\\x1b\\x1b,Ut\\xde\\xeb2\\xb5\\x84\\xe5&\\x85;'.DB-Lib error message 102, severity 15:\nGeneral SQL Server error: Check messages from the SQL Server\n"
据我所知,它没有得到正确处理,我想我需要设法摆脱它

问题: 如何检索这个二进制文件20,然后以变量的形式从第二个表中检索相关数据

我不能有任何数据库相关的连接,查询需要保持原样

数据库:使用Microsoft SQL Server企业版v9.00.3042.00,即SQL Server 2005 Service Pack 2

编辑:

我想我已经把问题缩小到了最初检索binary20值的范围。因为当我将数据库中的一个值分配给python控制台中的字符串变量时,例如0x90D152B5ED57E00336FD8E106A7BCE28FC3EA588。我从表B中检索信息没有问题


为了在python中正确使用SHA1列,如何从TableA`中检索二进制文件20?

可能是因为where CONdition中缺少单引号。不幸的是,我已经怀疑了这一点,但它也不能使用单引号。您的查询应该类似于select。。。其中[SHA1]='\\xa3\\x13\\xa4\\xcb\\xda\\x1b\\x1b,Ut\\xde\\…'我添加了单引号,例如con.execute\u query'SELECT[name]FROM TableB,其中[SHA1]=\+strsha1\u bin+'\。。我也试着不强制转换到str,但这也不起作用。试试这个“从表B中选择[name],其中[SHA1]=+strsha1_-bin+”
102, b"Incorrect syntax near '\\xa3\\x13\\xa4;\\xcb\\xda\\x1b\\x1b,Ut\\xde\\xeb2\\xb5\\x84\\xe5&\\x85;'.DB-Lib error message 102, severity 15:\nGeneral SQL Server error: Check messages from the SQL Server\n"