在sqlalchemy的数据类型中,Varchar和String有什么区别?



我曾经使用 varchar 进行动态字符串长度的文本字符串。最近,我看到人们还使用字符串用长度定义它。

它们有什么区别?哪一个最好使用?

我所知道的,

  • 使用 varchar 如果要拥有长度约束

  • 使用字符串如果您不想限制文本的长度

使用字符串类型时通常需要长度字段在创建表语句中,如 varchar需要长度数据库

参数

长度 - 可选,用于DDL和铸造表达式的列长度。可以安全省略,如果不会发出创建表。肯定数据库可能需要在DDL中使用长度,并将提出一个当创建表DDL发出时,如果 varchar发出no长度包括。该值是否被解释为字节或字符特定于数据库。

sqlalchemy docs

String更便携,因为它是一种通用的sqlalchemy型。

对于大多数后端,Python层中的String列定义将映射到后端的VARCHAR类型,但是如果目标后端使用其他类型,则将使用该类型。

因此

col = Column(String(1))

将在任何RDBMS上使用

但是

col = Column(VARCHAR(1))

仅在提供实际VARCHAR类型的RDBM上工作。

有关更多讨论的类型层次结构的文档。

最新更新