如何在SQLAlchemy中为Python bytes类型指定固定长度的数据库字段?
如何在SQLAlchemy中为Python bytes类型指定固定长度的数据库字段?
嘿,刚好能帮到你!其实你留意到的LargeBinary就是正确的选择,哪怕是16字节这种小长度的固定二进制字段也完全适用——别被它名字里的“Large”误导啦,它支持指定长度参数,用法和你熟悉的String(<length>)逻辑一模一样。
对于Python的bytes类型,如果你需要固定宽度的数据库字段,只需要在mapped_column里用LargeBinary(<固定长度>)来定义就行。比如你要存16字节的二进制数据(比如MD5的二进制形式),可以这么写:
class BinaryData(MyBase): __tablename__ = 'binary_data_table' id: Mapped[int] = mapped_column(primary_key=True) # 这里定义了一个固定16字节的二进制字段 md5_binary: Mapped[bytes] = mapped_column(LargeBinary(16))
这样定义后,对应的Postgres数据库字段会是固定长度的bytea(16),完美匹配你的需求。和字符串类型的处理逻辑一致:不指定长度的话LargeBinary是可变宽度,加上长度参数就变成固定宽度了,完全适合小长度的二进制数据存储场景。
备注:内容来源于stack exchange,提问作者user2138149
相关产品推荐
相关产品推荐

