如何用SQLite和SQLAlchemy定义TEXT/BLOB类型而非VARCHAR的表
修改SQLAlchemy模型列类型为TEXT/BLOB
要把Mailings表中的列从默认VARCHAR改成TEXT或BLOB类型,只需在mapped_column中指定对应的SQLAlchemy类型即可,步骤如下:
导入所需类型
先从SQLAlchemy库导入Text(对应TEXT类型)和LargeBinary(对应BLOB类型):from sqlalchemy import Text, LargeBinary修改列定义
针对需要变更类型的列,在mapped_column里传入指定类型。比如把textversion和htmlversion设为TEXT类型,若有二进制数据列(比如附件)则用LargeBinary:class Mailings(db.Model): __tablename__ = 'mailings' id: Mapped[str] = mapped_column(primary_key=True) title: Mapped[str] # 保持默认VARCHAR textversion: Mapped[str] = mapped_column(Text) # 改为TEXT类型 htmlversion: Mapped[str] = mapped_column(Text) # 改为TEXT类型 permalink: Mapped[str] # 保持默认VARCHAR # 若需BLOB类型,比如存储二进制附件: # attachment: Mapped[bytes] = mapped_column(LargeBinary)
说明
Text类型会适配不同数据库的TEXT实现(比如MySQL的TEXT、PostgreSQL的TEXT等),适合存储较长的文本内容;LargeBinary对应数据库的BLOB类型,用于存储二进制数据(如文件、图片等),此时Mapped的类型要改为bytes以匹配;- 未指定类型的列(如
title)仍会使用默认的VARCHAR类型。
内容的提问来源于stack exchange,提问作者MW_DEVEL
相关产品推荐
相关产品推荐

