我曾经使用 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上工作。
有关更多讨论的类型层次结构的文档。