我过去经常使用来处理动态字符串长度的文本字符串。最近,我看到人们还使用带有长度的字符串来定义它。
他们之间有什么区别?哪一种更适合使用?
发布于 2016-12-14 06:55:48
据我所知,
当在CREATE语句中使用字符串类型时,通常需要长度字段,因为大多数数据库中VARCHAR需要长度。 参数 length -可选的,用于DDL和CAST表达式的列的长度。如果不发出CREATE,可以安全地省略。在DDL中使用某些数据库可能需要一个长度,如果没有长度的VARCHAR包含,则在发出CREATE时会引发异常。该值是否解释为字节或字符是特定于数据库的。 SQLAlchemy文档
发布于 2022-09-03 11:10:45
String
更易于移植,因为它是一个通用的SQLAlchemy类型。
对于大多数后端,Python中的String
列定义将映射到后端的VARCHAR
类型,但如果目标后端使用其他类型,则将使用该类型。
因此
col = Column(String(1))
将在任何RDBMS上工作。
但
col = Column(VARCHAR(1))
只适用于提供实际VARCHAR
类型的关系数据库管理系统。
有关更多讨论,请参见类型层次文档。
https://stackoverflow.com/questions/41136136
复制相似问题