使用 Web2py/Pydal 将字段定义为无符号整数

Define Field as an Unsigned Integer With Web2py/Pydal

是否可以用无符号整数定义一个web2py模型Field?如果可以,如何实现?

基础数据库是 MySQL 等同的 CREATE TABLE 语句如下。

CREATE TABLE `t` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `value` int(11) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`)
)
;

我已经尝试了三次,但都没有成功。以下片段是尝试。

db.define_table('t', Field('value', 'integer unsigned'))
db.define_table('t', Field('value', 'integer', options=['unsigned']))
db.define_table('t', Field('value', 'integer', options=['UNSIGNED']))

我发现 web2py or pydal 文档中都没有提到无符号整数。当然,web2py 或 pydal 可能不支持无符号整数。我使用的是 web2py 版本 2.20.4-stable+timestamp.2020.05.02.22.03.36,pydal 版本 20200502.2,以及 MySQL 版本 5.7.25.

我不相信 pydal 明确支持无符号整数类型,但如果你简单地指定 type='integer',一切都应该有效,只要你不使用 pydal 进行迁移(即,它不会 为您创建一个新的无符号整数列,但它可以与现有列一起使用。

我想你想在字段上定义一个custom_qualifier:

Field('value', 'integer', custom_qualifier='UNSIGNED')

它只是在迁移时附加到字段定义中

这会使项目的可移植性降低,因为例如 PostgreSQL 或 MSSQL 中不存在无符号整数。