阿里云服务器ECS    
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新 [咨询更多]
阿里云存储OSS
简单易用、多重冗余、数据备份高可靠、多层次安全防护安全性更强、低成本 [咨询更多]
阿里云数据库RDS
稳定可靠、可弹性伸缩、更拥有容灾、备份、恢复、监控、迁移等方面的全套解决方案 [咨询更多]
阿里云安全产品
DDoS高防IP、web应用防火墙、安骑士、sll证书、态势感知众多阿里云安全产品热销中 [咨询更多]
阿里云折扣优惠    
云服务器ECS、数据库、负载均衡等产品新购、续费、升级联系客服获取更多专属折扣 [咨询更多]
在SQLAlchemy中有四种类型可用
2020-8-12    点击量:
  在SQLAlchemy中有四种类型可用:
  
  •通用类型
  
  •SQL标准类型
  
  •厂商自定义类型
  
  •用户定义类型

  
  SQLAlchemy定义了大量通用类型,它们是从各后端数据库所支持的实际SQL类型中抽象出来的。这些类型在sqlalchemy.types模块中都可用,为方便起见,它们在sqlalchemy模块中也可用。接下来看看这些通用类型为什么有用。
  
  Boolean通用类型一般使用BOOLEANSQL类型,在Python端处理成true或false。但是,它在不支持BOOLEAN类型的后端数据库上使用SMALLINT。幸运的是SQLAlchemy隐藏了这个小细节,你可以坚信,你创建的所有查询或语句都能针对该类型的字段正确操作,而不管你使用的是哪种类型的数据库。你只需要在Python代码中处理true或false即可。在数据库迁移或分割后端系统(其中数据仓库是一种数据库类型,事务性系统是另外一种数据库类型)时,这种行为使得通用类型非常强大、有用。通用类型在Python和SQL中分别对应的类型如表1-1所示。
  在SQLAlchemy中有四种类型可用
  这些通用类型很重要,因为你会经常使用和定义它们。
  
  除了表1-1中列出的通用类型外,你还可以使用SQL标准类型和厂商自定义类型。当通用类型因其类型或现有模式中指定的特定类型而无法在数据库模式中按照需要使用时,我们通常会使用这两种类型。CHAR和NVARCHAR类型就是很好的例子,它们都要求使用正确的SQL类型而不仅仅是通用类型。如果我们使用的是在使用SQLAlchemy之前就已经定义好的数据库模式,那么就要准确地匹配类型。请务必记住,SQL标准类型的行为和可用性因数据库而异。SQL标准类型在sqlalchemy.types模块中是可用的。为了将SQL标准类型和通用类型区分开,标准类型全部采用大写字母。

  厂商自定义类型和SQL标准类型一样有用,但是它们只适用于特定的后端数据库。可以通过所选方言的文档或SQLALchemy站点确定有哪些类型可用。它们在sqlalchemy.dialects模块中都是可用的,并且每种数据库方言都有若干子模块。同样,这些类型采用的全是大写字母,以便同通用类型区分开。有时,我们可能想使用PostgreSQL强大的JSON字段,为此可以使用下面的语句来实现:

from sqlalchemy.dialects.postgresql import JSON 

        现在,我们可以定义JSON字段了。稍后,在我们的应用程序中,PostgreSQL专用的许多JSON函数都会用到它,比如ar-ray_to_json函数。你还可以自定义类型,以便用你选择的方式存储数据。例如,在把字符放入数据库记录时,将其放在存储在VARCHAR列中的文本的前面,并在从记录中获取这个字段时去掉它们。在处理现有系统仍然使用的遗留数据时,这可能很有用,因为这种类型的前缀在新应用程序中可能没用或者并不重要。

联系客服免费领取更多阿里云产品新购、续费升级折扣,叠加官网活动折上折更优惠