SQLalchemy中的数据类型
- 前言
- 一、类型映射表格
- 二、示例
- 总结
前言
这篇文章主要讲一下sqlalchemy中的数据类型和对应的sql类型
一、类型映射表格
SQLAlchemy 数据类型 | SQL 数据类型 | 描述 |
---|---|---|
ARRAY | ARRAY | 允许在数据库中存储数组,可以存储相同类型的多个值(mysql中不支持)。 |
BigInteger | BIGINT | 表示一个大整数,通常用于存储需要大值的整数。 |
Boolean | BOOLEAN | 表示布尔值的类,通常用于模型中的布尔字段。 |
Date | DATE | 表示日期的类,通常用于模型字段。 |
DateTime | DATETIME | 表示日期和时间的类。 |
Double | DOUBLE | 表示双精度浮点数的类。 |
Enum | ENUM | 枚举类型,可以在预定义的一组值中进行选择。 |
Float | FLOAT | 单精度浮点数的类。 |
Integer | INT | 表示整数的类。 |
Interval | DATETIME | 时间间隔类型,用于存储时间之间的间隔。 |
JSON | JSON | 用于存储 JSON 格式的数据。 |
LargeBinary | BLOB | 存储大型二进制数据的类型。 |
String | VARCHAR | 表示字符串的类,适合存储文本数据。 |
Text | TEXT | 表示文本的类,用于存储长文本数据。 |
Time | TIME | 表示时间的类。 |
Unicode | VARCHAR | 用于存储 Unicode 字符的类。 |
UnicodeText | TEXT | 存储大文本数据的 Unicode 类型。 |
Uuid | VARCHAR | 表示 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的关系还是有必要了解一下的,分享结束
感谢!!!。