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

发布于:2025-02-20 ⋅ 阅读:(412) ⋅ 点赞:(0)

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 REAL 或 DOUBLE PRECISION REAL 单精度或双精度浮点数,具体取决于参数 precision。
db.Numeric DECIMAL 或 NUMERIC 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 TEXT 或 NTEXT TEXT TEXT 支持 Unicode 的大文本字段。
db.Boolean TINYINT(1) BOOLEAN INTEGER 布尔值,通常存储为 0 或 1。
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 TIME 或 YEAR 等 INTERVAL 不支持 时间间隔字段,表示一段时间跨度。
db.Enum ENUM ENUM TEXT 枚举类型,适合存储有限的选项集合。
db.PickleType 动态类型 动态类型 动态类型 序列化 Python 对象存储为二进制数据。
db.LargeBinary BLOB BYTEA BLOB 大二进制对象字段,适合存储文件或其他二进制数据。

额外说明

  1. db.String 和 db.Text 的区别:

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

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

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

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

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

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


微信公众号

今日签到

点亮在社区的每一天
去签到