使用 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 中不存在无符号整数。
是否可以用无符号整数定义一个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 中不存在无符号整数。