SQLAlchemy常用数据类型

本文涉及的产品
RDS AI 助手,专业版
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
RDS Agent(兼容OpenClaw),2核4GB
简介: SQLAlchemy常用数据类型

SQLAlchemy常用数据类型

SQLAlchemy 是一个Python的SQL工具库和对象关系映射(ORM)工具,它提供了一种在Python中操作数据库的高效方式。下面是SQLAlchemy中常用的一些数据类型:

  • Integer:整形,映射到数据库中是int类型。
  • Integer:普通整数类型。
  • SmallInteger:小整数类型。
from sqlalchemy import Integer, SmallInteger

     Float:浮点类型,映射到数据库中是float类型。他占据的32位。

from sqlalchemy import Float
  • Double:双精度浮点类型,映射到数据库中是double类型,占据64位 (SQLALCHEMY中没有)。
  • String:可变字符类型,映射到数据库中是varchar类型.
1. from sqlalchemy import String, Text
2.
  • Boolean:布尔类型,映射到数据库中的是tinyint类型。
from sqlalchemy import Boolean
  • DECIMAL:定点类型。是专门为了解决浮点类型精度丢失的问题的。在存储钱相关的字段的时候建议大家都使用这个数据类型。
  • 这个类型使用的时候需要传递两个参数,第一个参数是用来标记这个字段总能能存储多少个数字,第二个参数表示小数点后有多少位。
  • Enum:枚举类型。指定某个字段只能是枚举中指定的几个值,不能为其他值。在ORM模型中,使用Enum来作为枚举,示例代码如下:
 class News(Base):
  __tablename__ = 't_news'
  tag = Column(Enum("python",'flask','django'))

在Python3中,已经内置了enum这个枚举的模块,我们也可以使用这个模块去定义相关的字段。示例代码如下:

class TagEnum(enum.Enum):
    python = "python"
    flask = "flask"
    django = "django"
class News(Base):
    __tablename__ = 't_news'
    id = Column(Integer,primary_key=True,autoincrement=True)
    tag = Column(Enum(TagEnum))
  news = News(tag=TagEnum.flask)
  • Date:存储时间,只能存储年月日。映射到数据库中是date类型。在Python代码中,可以使用datetime.date来指定。
  • DateTime:存储时间,可以存储年月日时分秒毫秒等。映射到数据库中也是datetime类型。在Python代码中,可以使用datetime.datetime来指定。
  • Time:存储时间,可以存储时分秒。映射到数据库中也是time类型。在Python代码中,可以使用datetime.time来至此那个。示例代码如下:
class News(Base):
  __tablename__ = 't_news'
  create_time = Column(Time)
news = News(create_time=time(hour=11,minute=11,second=11))
  • Text:存储长字符串。一般可以存储6W多个字符。如果超出了这个范围,可以使用LONGTEXT类型。映射到数据库中就是text类型。
  • LONGTEXT:长文本类型,映射到数据库中是longtext类型。

代码演示

from sqlalchemy import create_engine,Column,Integer,String,Float,Enum,Boolean,DECIMAL,Text,Date,DateTime,Time
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.dialects.mysql import LONGTEXT
from sqlalchemy.orm import sessionmaker
import enum
from datetime import date
from datetime import datetime
from datetime import time
#准备数据库的一堆信息   ip  port   user  pwd  数据库的名称  按要求组织格式
HOSTNAME = '127.0.0.1'
PORT = '3306'
DATABASE = 'first_sqlalchemy'
USERNAME = 'root'
PASSWORD = 'root'
#dialect+driver://username:password@host:port/database?charset=utf8
#按照上述的格式来 组织数据库信息
DB_URI ="mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8".\
  format(username=USERNAME,password=PASSWORD,host=HOSTNAME,port=PORT,db=DATABASE)
#创建数据库引擎
engine = create_engine(DB_URI)
#创建会话对象
session = sessionmaker(engine)()
#定义一个枚举类
class TagEnum(enum.Enum):
   python="PYHTON2"
   flask="FLASK2"
   django ="DJANGO"
#创建一个ORM模型   说明基于sqlalchemy  映射到mysql数据库的常用字段类型有哪些?
Base = declarative_base(engine)
class News(Base):
  __tablename__='news'
  id = Column(Integer,primary_key=True,autoincrement=True)
  price1 = Column(Float) #存储数据时存在精度丢失问题
  price2 = Column(DECIMAL(10,4))
  title = Column(String(50))
  is_delete =Column(Boolean)
  tag1 =Column(Enum('PYTHON','FLASK','DJANGO')) #枚举常规写法
  tag2 =Column(Enum(TagEnum)) #枚举另一种写法
  create_time1=Column(Date)
  create_time2=Column(DateTime)
  create_time3=Column(Time)
  content1 =Column(Text)
  content2 =Column(LONGTEXT)
# Base.metadata.drop_all()
# Base.metadata.create_all()
#新增数据到表news中
# a1 = News(price1=1000.0078,price2=1000.0078,title='测试数据',is_delete=True,tag1="PYTHON",tag2=TagEnum.flask,
#        create_time1=date(2018,12,12),create_time2=datetime(2019,2,20,12,12,30),create_time3=time(hour=11,minute=12,second=13),
#        content1="hello",content2 ="hello  hi  nihao")
a1 = News(price1=1000.0078,price2=1000.0078,title='测试数据',is_delete=False,tag1="PYTHON",tag2=TagEnum.python,
       create_time1=date(2018,12,12),create_time2=datetime(2019,2,20,12,12,30),create_time3=time(hour=11,minute=12,second=13),
       content1="hello",content2 ="hello  hi  nihao")
session.add(a1)
session.commit()

代码分析

  1. 导入必要的模块,包括create_engineColumnIntegerString等数据类型,以及与数据库交互的模块。
  2. 定义了连接数据库所需的一些信息,如主机、端口、数据库名称、用户名和密码。
  3. 使用提供的信息构建了数据库连接的URI。
  4. 创建了一个数据库引擎,用于连接数据库。
  5. 创建了一个会话对象,可以用于执行数据库操作。
  6. 定义了一个枚举类TagEnum,其中包含了一些标签。
  7. 定义了一个ORM模型News,包含了各种不同类型的字段,如整数、浮点数、字符串、布尔值、枚举、日期、时间等。
  8. 创建了这个表格(如果之前不存在的话)。
  9. 创建了一个News对象a1,并将其添加到会话中。
  10. 提交了会话,将数据插入到数据库中。
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
SQL 数据库 Python
SQLAlchemy中filter函数的使用
SQLAlchemy中filter函数的使用
|
SQL 关系型数据库 MySQL
python使用SQLAlchemy进行mysql的ORM操作
python使用SQLAlchemy进行mysql的ORM操作
369 0
|
7月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
873 7
|
7月前
|
存储 监控 NoSQL
140_异步推理:队列管理框架 - 使用Celery处理高并发请求的独特设计
在大型语言模型(LLM)部署的实际场景中,推理服务的并发处理能力直接影响用户体验和系统稳定性。随着LLM应用的普及,如何高效处理大量并发请求成为部署优化中的关键挑战。传统的同步请求处理方式在面对突发流量时容易导致系统过载,响应延迟增加,甚至服务崩溃。异步推理通过引入队列管理机制,能够有效缓冲请求峰值,平滑系统负载,提高资源利用率,从而为LLM服务提供更稳定、更高效的并发处理能力。
672 7
|
3月前
|
人工智能 自然语言处理 运维
2026年阿里云OpenClaw(Clawdbot)海外部署+Slack深度接入全指南
在全球化协作日益频繁的2026年,OpenClaw(原Clawdbot)作为企业级AI自动化代理工具,凭借**跨平台协作、轻量化部署、插件化扩展**三大核心优势,成为远程办公、跨国团队协作场景下的效率利器。2026年阿里云重磅推出OpenClaw专属海外云端部署方案,深度适配Slack在海外企业协作场景的高渗透率,实现“Slack频道/私信下达自然语言指令,阿里云海外服务器运行的OpenClaw自动执行自动化任务”的高效协作模式,彻底解决跨境网络不稳定、本地部署易断联、多语言协作障碍等痛点。
1018 12
|
Unix Linux Python
在Python中,删除环境变量
在Python中,删除环境变量
1099 8
|
SQL 索引 Python
Pandas中DataFrame合并的几种方法
Pandas中DataFrame合并的几种方法
2540 1
|
关系型数据库 API 数据库
Python流行orm框架对比
Python中有多个流行的ORM框架,如SQLAlchemy、Django ORM、Peewee、Tortoise ORM、Pony ORM、SQLModel和GINO。每个框架各有特点,适用于不同的项目需求。SQLAlchemy功能强大且灵活,适合复杂项目;Django ORM与Django框架无缝集成,易用性强;Peewee轻量级且简单,适合小型项目;Tortoise ORM专为异步框架设计;Pony ORM查询语法直观;SQLModel结合Pydantic,适合FastAPI;GINO则适合异步环境开发。初学者推荐使用Django ORM或Peewee,因其易学易用。
2543 4
|
SQL 关系型数据库 MySQL
SQLAlchemy使用指南
**SQLAlchemy 指南**:Python SQL 工具包,提供数据库高级抽象。安装:`pip install sqlalchemy`,加上数据库驱动(如 MySQL: `pip install mysql-connector-python`)。基础使用包括:创建数据库连接、定义模型、创建表、添加/查询/更新/删除数据。高级功能涉及关系映射、原生 SQL 语句及 SQLAlchemy Core。推荐阅读官方文档以深入了解。
1454 1
|
存储 关系型数据库 MySQL
SqlAlchemy 2.0 中文文档(四十九)(5)
SqlAlchemy 2.0 中文文档(四十九)
468 0