【SQLAlChemy】常见的数据类型有哪些,Column可选的参数有哪些呢?

常见数据类型与Column参数

常见类型

  1. Integer:整数类型,对应数据库的 int 类型。
  2. Float:浮点数类型,对应数据库的 float 类型。它占用 32 位空间。
  3. Double:双精度浮点数类型,对应数据库的 double 类型,占用 64 位空间。需要注意的是在 SQLAlchemy 中没有 Double 类型。
  4. String:可变字符类型,对应数据库的 varchar 类型。
  5. Boolean:布尔类型,对应数据库的 tinyint 类型。
  6. DECIMAL:定点数类型,主要用于解决浮点数精度问题。在存储与金钱相关的字段时,推荐使用此数据类型。使用时需要传递两个参数,第一个参数表示字段能存储的总位数,第二个参数表示小数点后的位数。
  7. Enum:枚举类型,限制字段值只能为预设的几个值。在 ORM 模型中,使用 Enum 类型表示枚举。也可以用 Python3 内置的 enum 模块定义字段。
  8. Date:日期类型,只能存储年月日。对应数据库的 date 类型。在 Python 代码中,可以使用 datetime.date 来指定。
  9. DateTime:日期时间类型,可以存储年月日时分秒毫秒等。对应数据库的 datetime 类型。在 Python 代码中,可以使用 datetime.datetime 来指定。
  10. Time:时间类型,可以存储时分秒。对应数据库的 time 类型。在 Python 代码中,可以使用 datetime.time 来指定。
  11. Text:长字符串类型,一般可以存储超过 6 万个字符。如果超出这个范围,可以使用 LONGTEXT 类型。对应数据库的 text 类型。
  12. LONGTEXT:超长文本类型,对应数据库的 longtext 类型。

常见的 Column 参数

  1. primary_key:将此字段设置为主键,需要设定值为 True
  2. autoincrement:将此字段设置为自动递增,需设定值为 True
  3. default:为某个字段设置默认值,常用于如发布时间等字段。
  4. nullable:确定某个字段是否可以为空。默认值为 True,意味着该字段可以为空。
  5. unique:确定某个字段的值是否需唯一。默认值为 False
  6. onupdate:在更新数据时会调用这个参数指定的值或函数。初次插入数据时,不会使用 onupdate 的值,而是使用 default 的值。这个参数常用于 update_time 字段(每次数据更新时都需更新该字段的值)。
  7. name:指定 ORM 模型中的某个属性映射到表中的字段名。如果未指定,则会使用该属性的名称作为字段名。如果已指定,则会使用指定的值作为表字段名。该参数也可以作为位置参数,在第一个参数中指定,如:
    title = Column(String(50),name='title',nullable=False)
    或者
    title = Column('my_title',String(50),nullable=False)

样例实现

class News(Base):__tablename__ = 'news'# id 整数类型,限制主键自增id = Column(Integer, primary_key=True, autoincrement=True)# 标题 长度为 100 字符类型, 不能为空title = Column(String(100), nullable=False)# 作者电话 字符类型 唯一author_telephone = Column(String(11), unique=True, nullable=False)# 是否删除 整型,不能为空, 默认为 0is_delete = Column(Integer, nullable=False, default=0)# 是否公开 布尔类型, 不能为空, 默认为 Trueis_published = Column(Boolean, nullable=False, default=True)# 标题1 枚举类型 常规写法tag1 = Column(Enum('python', 'java', 'go', 'javascript'))# 标题2 枚举类型 另一种写法tag2 = Column(Enum(TagEnum))# 时间的三种类型created_at = Column(Date, default=datetime.datetime.now)updated_at = Column(DateTime, onupdate=datetime.datetime.now, default=datetime.datetime.now)published_at = Column(Time)# 文本的两种类型content1 = Column(Text)content2 = Column(LONGTEXT)

生成的数据库表字段如下:


生成的 SQL 语句如下:

create table news
(id               int auto_incrementprimary key,title            varchar(100)                                      not null,author_telephone varchar(11)                                       not null,is_delete        int                                               not null,is_published     tinyint(1)                                        not null,tag1             enum ('python', 'java', 'go', 'javascript')       null,tag2             enum ('python', 'java', 'c', 'javascript', 'cpp') null,created_at       date                                              null,updated_at       datetime                                          null,published_at     time                                              null,content1         text                                              null,content2         longtext                                          null,constraint author_telephoneunique (author_telephone)
);

测试样例

新增一条数据,并更新相关字段值。

# 新建一个会话对象
session = sessionmaker(bind=engine)()# 创建一个 new 对象
new_demo = News(title='测试new',author_telephone='15991367893',is_delete=0,is_published=True,tag1='go',tag2=TagEnum.c,created_at=datetime.datetime.now(),updated_at=datetime.datetime.now(),published_at=datetime.time(),content1='这是一个测试性内容1',content2='这是一个测试性内容2')# session.add(new_demo)
# session.commit()
# session.close()# 测试 onupdate 参数
a_new = session.query(News).first()
a_new.title = '这是修改后的标题'
a_new.author_telephone = '15991367894'
# 提交事物
session.commit()
session.close()

注意

我们设置了author_telephone此处有些不足,不能满足正常开发需求,切忌在项目中使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/344766.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙开发接口安全:【@system.cipher (加密算法)】

加密算法 说明: 本模块首批接口从API version 3开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import cipher from system.ciphercipher.rsa rsa(Object): void RSA 算法加解密。 系统能力: SystemCapabil…

ChatTTS 文字生成语言本地模型部署

ChatTTS部署 官方信息 [ChatTTS首页](https://chattts.com/)搭建步骤 1、下载源码 git clone https://github.com/2noise/ChatTTS.git 2、按照环境 pip install torch ChatTTS pip install -r requirements.txt 3、下载模型 git clone https://www.modelscope.cn/pzc163/ch…

深入解读Prometheus Adapter:云原生监控的核心组件

一、引言 Prometheus Adapter的背景与重要性 在现代的云原生架构中,微服务和容器化技术得到了广泛的应用。这些技术带来了系统灵活性和扩展性的提升,但同时也增加了系统监控和管理的复杂度。Prometheus作为一款开源的监控系统,因其强大的指标…

vuInhub靶场实战系列--prime:2

免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关。 目录 免责声明前言一、环境配置1.1 靶场信息1.2 靶场配置 二、信息收集2.1 主机发现2.1.1 netdiscover2.1.2 nmap主机扫描2.1.3 arp-scan主机扫描 2.2 端口扫描…

【面试干货】MySQL 三种锁的级别(表级锁、行级锁和页面锁)

【面试干货】MySQL 三种锁的级别(表级锁、行级锁和页面锁) 1、表级锁2、行级锁3、页面锁4、总结 💖The Begin💖点点关注,收藏不迷路💖 在 MySQL 数据库中,锁是控制并发访问的重要机制&#xff0…

队列和栈的实现

本节讲解的队列与栈,如果你对之前的线性和链式结构顺利掌握了,那么下边的队列和栈就小菜一碟了。因为我们会用前两节讲到的东西来实现队列和栈。 之所以放到一起讲是因为这两个东西很类似,队列是先进先出结构(FIFO, first in first out)&…

独立游戏之路 -- 获取OAID提升广告收益

Unity 之 获取手机:OAID、IMEI、ClientId、GUID 前言一、Oaid 介绍1.1 Oaid 说明1.2 移动安全联盟(MSA) 二、站在巨人的肩膀上2.1 本文实现参考2.2 本文实现效果2.3 本文相关插件 三、Unity 中获取Oaid3.1 查看实现源码3.2 工程配置3.3 代码实现3.4 场景搭建 四、总…

Linux卸载残留MySQL【带图文命令巨详细】

Linux卸载残留MySQL 1、检查残留mysql2、检查并删除残留mysql依赖3、检查是否自带mariadb库 1、检查残留mysql 如果残留mysql组件,使用命令 rpm -e --nodeps 残留组件名 按顺序进行移除操作 #检查系统是否残留过mysql rpm -qa | grep mysql2、检查并删除残留mysql…

香橙派 Orange AIpro 测评记录视频硬件解码

香橙派 Orange AIpro 测评记录视频硬件解码 香橙派官网:http://www.orangepi.cn/ 收到了一块Orange Pi AIpro开发板,记录一下我的测评~测评简介如下:1.连接网络2.安装流媒体进行硬件解码测试3.安装IO测试 简介 Orange Pi AI Pro 是香橙派联合…

Web安全:Web体系架构存在的安全问题和解决方案

「作者简介」:2022年北京冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础对安全知识体系进行总结与归纳,著作适用于快速入门的 《网络安全自学教程》,内容涵盖系统安全、信息收集等12个知识域的一百多个知识点,持续更新。 这一章节我们需要了解w…

Git【版本控制和Git的安装介绍】

01 【版本控制和Git的安装介绍】 工程设计领域中,使用“版本控制”管理工程蓝图的设计过程。在 IT 开发中也可以使用版本控制思想管理代码的版本迭代。 1.目的 协同修改:支持在服务器对同一个文件多人协同地修改; 数据备份:同时…

力扣hot100:138. 随机链表的复制(技巧,数据结构)

LeetCode:138. 随机链表的复制 这是一个经典的数据结构题,当做数据结构来学习。 1、哈希映射 需要注意的是,指针也能够当做unordered_map的键值,指针实际上是一个地址值,在unordered_map中,使用指针的实…

M1Pro 使用跳板机

Mac (M1 Pro) 通过Iterm2 使用跳板机 1、由于堡垒机(跳板机)不能支持mac系统终端工具,只支持xshell等win生态。所以我们需要先安装iterm2 装iterms教程 这里头对rz、sz的配置不详细。我们可以这样配置: where iterm2-send-zmod…

Stable diffusion采样器详解

在我们使用SD web UI的过程中,有很多采样器可以选择,那么什么是采样器?它们是如何工作的?它们之间有什么区别?你应该使用哪一个?这篇文章将会给你想要的答案。 什么是采样? Stable Diffusion模…

Spring Boot通过自定义注解和Redis+Lua脚本实现接口限流

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

社区物资交易互助平台的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,基础数据管理,论坛管理,公告信息管理 前台账户功能包括:系统首页,个人中心,论坛,求助留言板,公…

Go微服务: 分布式之通过本地消息实现最终一致性和最大努力通知方案

通过本地消息实现最终一致性 1 )概述 我们的业务场景是可以允许我们一段时间有不一致的消息的状态的,并没有说必须特别高的这个消息的一致性比如说在TCC这个架构中,如果采用了消息的最终一致性,整体架构设计要轻松好多即便我们库…

例54:Draw使用

建立一个控制台工程,输入代码: Screen 13 移动到(50,50)而不绘图 Draw "BM 50,50" B:移动但不绘制,M:移动到指定位置 将绘图颜色设置为2(绿色) Draw "C2" C将颜色改为n …

酒店旅游API服务汇总

各大旅游平台常用API服务汇总: 实时房源服务【Airbnb】飞猪旅行开放服务途牛旅行开放平台API华为云数字差旅【差旅管理】动态信息接口【美团酒店】旅行商城商家管理API【马蜂窝】交易流程接口【美团酒店】电子导游【携程旅行】

如何提高网站收录?

GSI服务就是专门干这个的,这个服务用的是光算科技自己研发的GPC爬虫池系统。这个系统通过建立一个庞大的站群和复杂的链接结构,来吸引谷歌的爬虫。这样一来,你的网站就能更频繁地被谷歌的爬虫访问,从而提高被收录的机会。 说到效…