如何在 SQLalchemy 中对二进制值执行按位运算?

How do I perform bitwise operations on binary values in SQLalchemy?

SQLAlchemy 文档建议程序可以通过简单地使用 op 函数访问 sql 的按位运算符,例如 expression.op('&')(0x04)。但是,当我将它用于二进制值时,我得到了异常结果:

with Session(engine) as sess:
     stmt = select(table.c.myvarbinary.op('&')(myBytes))
     result = sess.execute(stmt).fetchone()
     print(x[0])

打印b''

如果我绕过 SQLAlchemy 的 api,运算符可以正常工作:

with Session(engine) as sess:
     stmt = text(f'SELECT myvarbinary & {myBytes.hex()} FROM table;')
     result = sess.execute(stmt).fetchone()
     print(x[0])

打印b'[expected result]'

我不知道这可能是什么原因。我连接的数据库使用 MySQL.

问题是我的数据库没有将传入的字节正确解释为字节串;我能够通过向语句显式添加 CAST 来解决问题。

stmt = select(table.c.myvarbinary.op('&')(cast(myBytes, types.LargeBinary))