sqlalchemy中的数据类型

SQLalchemy中的数据类型

  • 前言
  • 一、类型映射表格
  • 二、示例
  • 总结


前言

这篇文章主要讲一下sqlalchemy中的数据类型和对应的sql类型


一、类型映射表格

SQLAlchemy 数据类型SQL 数据类型描述
ARRAYARRAY允许在数据库中存储数组,可以存储相同类型的多个值(mysql中不支持)。
BigIntegerBIGINT表示一个大整数,通常用于存储需要大值的整数。
BooleanBOOLEAN表示布尔值的类,通常用于模型中的布尔字段。
DateDATE表示日期的类,通常用于模型字段。
DateTimeDATETIME表示日期和时间的类。
DoubleDOUBLE表示双精度浮点数的类。
EnumENUM枚举类型,可以在预定义的一组值中进行选择。
FloatFLOAT单精度浮点数的类。
IntegerINT表示整数的类。
IntervalDATETIME时间间隔类型,用于存储时间之间的间隔。
JSONJSON用于存储 JSON 格式的数据。
LargeBinaryBLOB存储大型二进制数据的类型。
StringVARCHAR表示字符串的类,适合存储文本数据。
TextTEXT表示文本的类,用于存储长文本数据。
TimeTIME表示时间的类。
UnicodeVARCHAR用于存储 Unicode 字符的类。
UnicodeTextTEXT存储大文本数据的 Unicode 类型。
UuidVARCHAR表示 UUID 的类。

更多请参考官方文档

二、示例

from sqlalchemy import create_engine, types
from sqlalchemy.orm import sessionmaker, declarative_base, Mapped, mapped_column
HOST = "127.0.0.1"  # 数据库地址 用localhost也行
PORT = "3306"  # 数据库端口
DATABASENAME = "test_db"
USE = "root"
PWD = "123456"
DB_CLASS = "mysql"
DRIVER = "pymysql"
DB_URL = f"{DB_CLASS}+{DRIVER}://{USE}:{PWD}@{HOST}:{PORT}/{DATABASENAME}"
engine = create_engine(DB_URL)
Base = declarative_base()
Session = sessionmaker(bind=engine)
class TestType(Base):
    __tablename__ = 'test_type'
    id = mapped_column(types.Integer, primary_key=True)  # 添加主键列
    _bigint = mapped_column(types.BigInteger)
    _boolean = mapped_column(types.Boolean)
    _date = mapped_column(types.Date)
    _datetime = mapped_column(types.DateTime)
    _double = mapped_column(types.Double)
    _enum = mapped_column(types.Enum('a', 'b', 'c'))
    _float = mapped_column(types.Float)
    _integer = mapped_column(types.Integer)
    _interval = mapped_column(types.Interval)
    _json = mapped_column(types.JSON)
    _largebinary = mapped_column(types.LargeBinary)
    _string = mapped_column(types.String(16))
    _text = mapped_column(types.Text)
    _time = mapped_column(types.Time)
    _unicode = mapped_column(types.Unicode(16))
    _unicodetext = mapped_column(types.UnicodeText)
    _uuid = mapped_column(types.Uuid)
Base.metadata.create_all(engine)

表的结构如下
在这里插入图片描述

总结

学习sqlalcheml对里面的数据类型和sql的关系还是有必要了解一下的,分享结束
感谢!!!。

### SQLAlchemy ORM 支持的数据类型 SQLAlchemy 提供了一系列内置的数据类型用于定义模型字段,这些数据类型可以映射到不同数据库引擎对应的原生类型。以下是常用的一些数据类型及其用法: #### 基本数据类型 - **Integer**: 整数类型。 ```python from sqlalchemy import Integer, Column id = Column(Integer, primary_key=True) ``` - **String(length)**: 字符串类型,需指定最大长度。 ```python name = Column(String(50)) ``` - **Text**: 长文本字符串,默认无长度限制。 ```python description = Column(Text()) ``` - **Boolean**: 布尔值类型。 ```python active = Column(Boolean(), default=True) ``` - **Float(precision, decimal_return_scale=None)** 和 **Numeric(precision, scale=0)**: 浮点数和定点数类型。 ```python price = Column(Numeric(10, 2)) # 定义精度为10位整数部分加两位小数部分的数值型列 rating = Column(Float()) # 存储浮点类型的评分 ``` #### 时间日期类型 - **Date**, **Time**, **DateTime** 这些类型分别表示日期、时间以及两者组合的形式。对于 `DateTime` 类型还可以设置默认时间为当前时间戳。 ```python created_at = Column(DateTime(timezone=True), server_default=text('NOW()')) updated_at = Column(DateTime(timezone=True), onupdate=datetime.now) ``` #### JSON/BLOB 数据类型 - **JSON/JSONB (PostgreSQL specific)**: PostgreSQL 中特有的 JSON 或者二进制 JSON 格式的存储方式。 ```python metadata_ = Column(JSON) # 使用下划线避免与 Python 关键字冲突 config_data = Column(JSONB) # 更高效的索引性能 ``` - **LargeBinary(size)**: 大容量二进制对象(如文件),可选参数 size 表示预期的最大尺寸。 ```python avatar_blob = Column(LargeBinary()) ``` 除了上述提到的基础类型外,SQLAlchemy 还提供了其他一些特殊用途的数据类型,比如枚举(Enum),数组(Array)[^1]等,在实际应用中可以根据需求灵活选用合适的类型来满足业务逻辑的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ちょうていしょ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值