SQLAlchemy 中字段类型与常见数据库(MySQL、PostgreSQL 和 SQLite)的全面映射关系

SQLAlchemy 中字段类型与常见数据库(MySQL、PostgreSQL 和 SQLite)的全面映射关系表。这份映射关系可以帮助你在开发中选择正确的数据类型,确保代码在不同数据库之间具有良好的兼容性。


SQLAlchemy 数据类型与数据库字段类型映射表

SQLAlchemy 类型 MySQL 类型 PostgreSQL 类型 SQLite 类型 说明
db.Integer INTEGER INTEGER INTEGER 4 字节整数,范围为 -2,147,483,648 到 2,147,483,647。
db.SmallInteger SMALLINT SMALLINT INTEGER 2 字节整数,范围为 -32,768 到 32,767。
db.BigInteger BIGINT BIGINT INTEGER 或动态整数 8 字节整数,范围为 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。
db.Float FLOAT REALDOUBLE PRECISION REAL 单精度或双精度浮点数,具体取决于参数 precision
db.Numeric DECIMALNUMERIC NUMERIC 动态数值 固定精度和小数位数的数值类型,适合存储货币等精确数值。
db.String(length) VARCHAR(length) VARCHAR(length) TEXT 可变长度字符串,最大长度由 length 参数指定。
db.Text TEXT TEXT TEXT 大文本字段,适合存储长字符串内容。
db.Unicode(length) VARCHAR(length)NVARCHAR VARCHAR(length) TEXT 支持 Unicode 的可变长度字符串。
db.UnicodeText TEXTNTEXT TEXT TEXT 支持 Unicode 的大文本字段。
db.Boolean TINYINT(1) BOOLEAN INTEGER 布尔值,通常存储为 01
db.Date DATE DATE DATE 日期字段,格式为 YYYY-MM-DD
db.Time TIME TIME TIME 时间字段,格式为 HH:MM:SS
db.DateTime DATETIME TIMESTAMP TIMESTAMP 日期时间字段,格式为 YYYY-MM-DD HH:MM:SS
db.Interval TIMEYEAR INTERVAL 不支持 时间间隔字段,表示一段时间跨度。
db.Enum ENUM ENUM TEXT 枚举类型,适合存储有限的选项集合。
db.PickleType 动态类型 动态类型 动态类型 序列化 Python 对象存储为二进制数据。
db.LargeBinary BLOB BYTEA BLOB 大二进制对象字段,适合存储文件或其他二进制数据。

额外说明

  1. db.Stringdb.Text 的区别:

    • db.String 适合存储较短的字符串(如名称、标题),需要指定长度。
    • db.Text 适合存储长文本内容,无需指定长度。
  2. db.Numericdb.Float 的选择:

    • 如果需要精确的小数运算(如货币计算),使用 db.Numeric
    • 如果对精度要求不高,可以选择 db.Float
  3. db.Enum 的使用:

    • db.Enum 在 MySQL 和 PostgreSQL 中会映射为原生的枚举类型,但在 SQLite 中会被映射为字符串。
  4. db.PickleType 的注意事项:

    • db.PickleType 将 Python 对象序列化后存储为二进制数据,适合存储复杂数据结构,但不建议用于长期存储,因为序列化格式可能随 Python 版本变化。
  5. SQLite 的特殊性:

    • SQLite 是动态类型的数据库,大多数 SQLAlchemy 类型都会映射为 TEXTINTEGER,但功能上仍然可以满足需求。

通过以上映射关系表,你可以根据实际需求选择合适的 SQLAlchemy 数据类型,并确保其在不同数据库中的正确映射。

相关推荐
TDengine (老段)3 小时前
TDengine 数学函数 DEGRESS 用户手册
大数据·数据库·sql·物联网·时序数据库·iot·tdengine
TDengine (老段)3 小时前
TDengine 数学函数 GREATEST 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
安当加密4 小时前
云原生时代的数据库字段加密:在微服务与 Kubernetes 中实现合规与敏捷的统一
数据库·微服务·云原生
爱喝白开水a4 小时前
LangChain 基础系列之 Prompt 工程详解:从设计原理到实战模板_langchain prompt
开发语言·数据库·人工智能·python·langchain·prompt·知识图谱
想ai抽4 小时前
深入starrocks-多列联合统计一致性探查与策略(YY一下)
java·数据库·数据仓库
武子康4 小时前
Java-152 深入浅出 MongoDB 索引详解 从 MongoDB B-树 到 MySQL B+树 索引机制、数据结构与应用场景的全面对比分析
java·开发语言·数据库·sql·mongodb·性能优化·nosql
longgyy4 小时前
5 分钟用火山引擎 DeepSeek 调用大模型生成小红书文案
java·数据库·火山引擎
ytttr8735 小时前
C# 仿QQ聊天功能实现 (SQL Server数据库)
数据库·oracle·c#
盒马coding6 小时前
第18节-索引-Partial-Indexes
数据库·postgresql
不剪发的Tony老师6 小时前
CloudDM:一站式数据库开发管理工具
数据库